2022/10/20
redis的五种数据结构
字符串 存储的数字时底层采用int,存储的时长字符串 (长度大于39个字节)时,底层采用raw数据结构,存储的是短字符串(长度小于39个字节)时,采用embstr数据结构。
链表
当链表对象所有字符串对象小于64个字节时,元素数量小于512个,采用ziplist数据结构,其他情况采用双向链表结构
hash
存储的元素数量小于512个,所有元素长度小于64个字节,不满足ziplist条件的其他情况采用哈希表
set
当存储的元素都是整数,元素数量小于512个时采用inset
不满足inset条件的其他情况采用哈希表
zset
存储元素数量小于128,所有元素长度小于64个字节采用ziplist,不满足ziplist条件的其他情况采用跳表
缓存雪崩
一句话总结缓存雪崩
在高并发下,大量缓存key再同一时间失效,大量请求直接落在数据库上,导致数据库宕机
缓存穿透
一句话总结缓存穿透
redis缓存中和数据库都没有相关数据(例 用户直接携带id<=0的参数不断发起请求),redis中没有这样的数据,所以不进行拦截,直接被穿透到数据库,导致数据库压力过大宕机。
缓存击穿
一句话总结缓存击穿
一个热点key。在不停的扛着高并发,当这个热点key在失效的一瞬间,持续的高并发访问就击破缓存直接访问数据库,导致数据库宕机
最后总结
雪崩是大面积的key缓存失效,穿透是redis里不存在这个缓存key;击穿是redis某一个热点key突 然失效,最总受害者都是数据库。
单线程的redis为什么这么快?
说一说redis的数据过期淘汰策略
redis中数据过期策略采用定期删除+惰性删除策略
1、定期删除、惰性删除策略是什么?
2、定时删除+惰性删除策略是如何工作的
redis和memcached的区别?
哨兵