曹耘豪的博客

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命令
  7. Redis常见问题
    1. 热点Key问题
    2. 大key删除
  8. Redis 7的ACL权限控制

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/

Redis常见问题

热点Key问题

大key删除

Redis 7的ACL权限控制

   / 
  , ,