1、redis的缓存穿透、缓存击穿、缓存雪崩
缓存穿透:是redis和数据库都没有这个值,大量的请求到达数据库。
使用布隆过滤器。
缓存null。
缓存击穿:是redis的一个过期key,大量的请求访问到数据库。
合理设置过期时间。
多级缓存。
缓存雪崩:是指redis出现大量的key同时过期,大量的请求访问数据库。
过期时间增加随机值。
2、redis的分布式锁
setNx(key,过期时间)+lua脚本
redisson框架实现的锁
3、redis的一致性
强一致:延时双删不能保证强一致性。(修改前删一下,修改后在删一下,之后在更新缓存),redission中的读写锁,读的时候可以并发,写的时候不能并发。
最终一致性:mq异步更行缓存。
4、redis的集群
分片集群(多个master互相检测健康状态)
哈希槽 16384
读写数据:根据key的有效部分计算哈希值,在对17384取余的余数作为插槽。
5、redis的淘汰策略。 allkeys-lru
lru算法:最少最近使用
lfu算法:最少频率使用
6、redis的持久化
rdb:快照的方式写入磁盘,读写效率高,但可能会丢数据。
aof:是以命令的方式写入磁盘,体积较大,恢复效率慢,丢数据风险小。
7、redis的过期策略
惰性删除:访问key的时候判断是否过期
定期删除:定期检查一定的key是否过期(slow,fast(对cpu影响小))
8、redis为啥那么快
纯内存操作,肯定快。
单线程,没有上下文的切换。
使用I/O多路复用模型。(你需要啥告诉我,我这就给你办,而不是我去循环找你)