曹耘豪的博客

Redis基础

  1. Redis数据结构
  2. Redis过期策略
  3. Redis内存淘汰策略
  4. Redis持久化
  5. Redis高可用方案
    1. 1. 主从架构
    2. 2. 哨兵模式(sentinel,基于主从架构)
    3. 3. Redis Cluster
      1. 哈希槽
      2. 重定向MOVED
  6. Redis命令

Redis数据结构

https://blog.csdn.net/mz474920631/article/details/125200050

Redis过期策略

Redis内存淘汰策略

  1. noeviction:只返回错误,不会删除任何key。该策略是Redis的默认淘汰策略,一般不会选用
  2. volatile-ttl:将设置了过期时间的key中即将过期(剩余存活时间最短)的key删除掉
  3. volatile-random:在设置了过期时间的key中,随机删除某个key
  4. allkeys-random:从所有key中随机删除某个key
  5. volatile-lru:基于LRU算法,从设置了过期时间的key中,删除掉最近最少使用的key
  6. allkeys-lru:基于LRU算法,从所有key中,删除掉最近最少使用的key。该策略是最常使用的策略
  7. volatile-lfu:基于LFU算法,从设置了过期时间的key中,删除掉最不经常使用(使用次数最少)的key
  8. allkeys-lfu:基于LFU算法,从所有key中,删除掉最不经常使用(使用次数最少)的key

Redis持久化

Redis高可用方案

https://baijiahao.baidu.com/s?id=1729711337158702696

1. 主从架构

2. 哨兵模式(sentinel,基于主从架构)

3. Redis Cluster

由多个redis节点组成,数据通过分片的形式保存在各个redis节点上

哈希槽

Redis集群有16384个哈希槽,进行set操作时,每个key会通过CRC16校验后再对16384取模来决定放置在哪个槽,搭建Redis集群时会先给集群中每个master节点分配一部分哈希槽

重定向MOVED

由于每个节点都知道所有节点信息,所以client可以向任意redis master节点发送命令

如果key不在本机,则返回MOVED错误,格式为MOVED [哈希槽] [IP:port](key所属的哈希槽和能处理这个请求的Redis节点的IP和端口号),客户端根据此重新发送命令

Redis命令

Note that calling EXPIRE/PEXPIRE with a non-positive timeout or EXPIREAT/PEXPIREAT with a time in the past will result in the key being deleted rather than expired (accordingly, the emitted key event will be del, not expired). https://redis.io/commands/expire/

   / 
  ,