应用问题:
缓存雪崩:redis缓存里的key在同一时间大量失效,导致大量请求直接访问数据库,导致雪崩。
解决方法:利用随机数来设置缓存的过期时间。
分布式锁:redis使用分布式锁时,可能会出现锁死的情况,也可能会出现释放别人锁的情况,还有redis操作不是原子操作,所以也有很小的情况下会出现释放别人锁:当判断UUID相同时,正准备释放锁,结果时间过期了,redis自动释放锁,然后自己又释放一次,导致释放的是下一个人的锁了。
解决方法:设置过期时间,解决锁死的情况;利用UUID来生成唯一标识,只有当UUID相同时才会释放锁解决释放别人锁情况;利用lua脚本的原子性来进行UUID比较和释放锁。
新功能:
ACL:增强了redis权限控制的功能
IO多线程:redis命令本质还是单线程的,只是客户端交互部分和网络IO实现了多线程。
支持Cluster: redis集群不用安装ruby环境,通过多线程的方式对多个分片进行压测。
其它:RESP通信协议、客户端缓存、proxy集群代理模式、Modules api(一个强大的api)。