1.缓存特点
1.缓存数据不是特别重要
2.缓存数据允许丢失
3.随着访问变化热点数据
2.缓存存在的问题
随着业务运转,缓存数据越来越大,而内存有限,存在瓶颈。
redis对于这个问题有两种解决方案:
1.根据业务逻辑为数据设置过期时间
设置过期时间的特点:
a、访问数据不会改变数据的过期时间
b、修改数据会使过期时间失效
c、设置过期时间后,进入倒计时,当倒计时结束后,数据失效
过期数据的回收策略:
a、被动回收:当数据被访问的时候,判断过期时间倒计时是否结束,是的话,将数据从内存中删除
b、主动回收:随机N个数据进行遍历,判断过期时间倒计时是否结束,是的话将数据从内存中删除。
2.根据业务的运转,设置maxmemory阈值,当内存大小达到该值时进行回收策略,redis的回收策略:
a、allkeys-rand:从所有缓存结果集中随机删除一部分数据
b、volatile-rand:从设置了过期时间的结果集中随机删除一部分数据
c、allkeys-LRU:从所有缓存结果集中删除最少使用的一部分数据
d、volatile-LRU:从设置了过期时间的结果集中删除最少使用的一部分数据
e、volatile-ttl:从设置了过期时间的结果集中删除里过期时间最近的一部分数据
f、none:当缓存的数据大小达到maxmemory阈值的时候,不删除数据,同时也不再支持添加数据