redis 数据存储格式
string
hash
list
set
zset 有序的set
redis集群实现原理(哈希槽 https://blog.csdn.net/weixin_44688973/article/details/125441228):
redis一共有16384个哈希槽,把这些哈希槽分配给redis服务器节点,然后CRC16(key)算法计算key对应的槽放入到redis对应的服务器,从redis中取数据逻辑和这个一致;
哨兵和主从模式:
哨兵监控redis主节点的状态,
主从模式,每个redis节点都有一个主节点和N个从节点,主节点不正常时筛选一个从节点顶上,主节点恢复后作为当前主节点的从节点
缓存击穿:大批缓存同一时间过期,大量请求穿透缓存直达数据库
解决:批量增加缓存时将这一批数据的缓存过期时间设置为一个时间段内的不同时间
缓存穿透:同一时间大量数据查询redis,redis中没有,击穿redis-->查询数据库也没查到
血崩:缓存雪崩指的是redis缓存支撑不住或宕掉后,流量疯狂打向后端存储层,造成存储层也会级联宕机的情况
预防和解决缓存雪崩问题, 可以从以下三个方面进行着手
1) 保证缓存层服务高可用性,比如使用Redis Sentinel(主从)或Redis Cluster(集群)。
缓存双写不一致:a查询后放缓存,b更新放缓存,a查询后还没放缓存 此时 b更新放了缓存,然后a再放缓存
1、使用阿里开源的canal配合MQ解决,逻辑:MysqL开启binlog日志,Canal服务端订阅MysqL binlog日志并推送到MQ消息队列,MQ收到数据后将数据更新到redis;
参考:Redis缓存与数据库双写一致性解决方案_八五年的湘哥的博客-CSDN博客_双写一致性解决方案
redis操作手册:链接:https://pan.baidu.com/s/13hTIjcFUpVmiIrWy5va4WA?pwd=o57o
redis高并发缓存与性能优化:链接:https://pan.baidu.com/s/14vde3_5WZEGJwsmXDzupUA?pwd=vk9n
redis主从、哨兵:链接:https://pan.baidu.com/s/1wq7AQIA8psuZMaIe0J9mAQ?pwd=qnpa