zoukankan      html  css  js  c++  java
  • redis基础-Remote Dictionary Server

    Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。
    Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。
    Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
    Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。

    数据结构

    String : key最大是512K,键最大是512M。建议每个key不要超过M级别
    Hash
    List
    Set
    ZSet
    HyperLogLog:基数计算(cardinality counting)指的是统计一批数据中的不重复元素的个数
    Geo
    Pub/Sub
    Redis Module:BloomFilter,CuckooFilter,RedisSearch

    Redis大Key

    存储本身的key值空间太大,或者hash,list,set等存储中value值过多。

    如何保证redis中的数据都是热点数据:redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
    Redisson是一个高级的分布式协调Redis客服端。
    Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。
    Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。
    Redis集群之间是异步复制。
    Redis集群最大节点个数是16384。
    Redis集群目前无法做数据库选择,默认在0数据库。
    ping测试Redis的连通性。
    redis中的管道:一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。
    Redis事务相关的命令:MULTI、EXEC、DISCARD、WATCH
    过期时间:EXPIRE
    永久有效:PERSIST
    内存优化:尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面。
    Redis回收使用的是LRU算法
    Redis2.6开始redis-cli支持一种新的被称之为pipe mode的新模式用于执行大量数据插入工作。
    Redis Cluster实现了一种混合形式的查询路由,但并不是直接将请求从一个redis节点转发到另一个redis节点,而是在客户端的帮助下直接redirected到正确的redis节点。
    Redis是单线程的,可以在同一个服务器部署多个Redis的实例,并把他们当作不同的服务器来使用。
    Redis的存储极限是系统中的可用内存值
    Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
    如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
    为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
    尽量避免在压力很大的主库上增加从库
    主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...

  • 相关阅读:
    HDU1205 吃糖果【水题】
    HDU2568 前进【水题】
    架构图初体验
    五层架构
    文件系统权限设计涉及范畴
    微服务
    领域驱动设计
    容器技术Docker
    架构总结
    仓储模式的简单理解
  • 原文地址:https://www.cnblogs.com/yueerya/p/11508057.html
Copyright © 2011-2022 走看看