什么情况下使用redis
- 针对热点数据进行缓存
- 对于特定限时数据的存放
- 针对带热点权值数据的排序list
- 分布式锁
Redis数据类型
String:字符串类型,最简单的类型
Hash:类似于Map的一种结构。
List:有序列表。
Set:无序集合。
ZSet:带权值的无序集合,即每个ZSet元素还另有一个数字代表权值,集合通过权值进行排序。
缓存穿透的原因及其解决方法
缓存穿透
缓存穿透指缓存和数据库均没有查询的数据,一次性大量的查询请求直接打到数据库上造成数据库压力过大乃至崩溃
解决方法
- 在数据库操作访问前进行校验,对不合法请求直接返回。
- 对于经常被访问的,并且数据库没有的键,缓存层记录键=null。
缓存雪崩的原因及其解决方法
缓存雪崩
缓存雪崩指缓存中一大批数据到过期时间,而从缓存中删除。但该批数据查询数据量巨大,查询全部走数据库,造成数据库压力过大。
解决方法
- 缓存数据设置随机过期时间,防止同一时间大量数据过期。
- 设置热点数据永远不过期。
- 对于集群部署的情况,将热点数据均匀地分布在不同缓存中。
要怎么应对Redis的内存满了的情况
Redis定义了「8种内存淘汰策略」用来处理redis内存满的情况:
1.noeviction:直接返回错误,不淘汰任何已经存在的redis键
2.allkeys-lru:所有的键使用lru算法进行淘汰
3.volatile-lru:有过期时间的使用lru算法进行淘汰
4.allkeys-random:随机删除redis键
5.volatile-random:随机删除有过期时间的redis键
6.volatile-ttl:删除快过期的redis键
7.volatile-lfu:根据lfu算法从有过期时间的键删除
8.allkeys-lfu:根据lfu算法从所有键删除