用于解决什么问题呢?举个例子
1)咱们都知道技术都是衍生于问题的。那咱们就来讲说用来作什么吧。
你们能够想一想,当咱们的物理服务内存只有8G,可是数据却有100G,如何慢慢的放在redis中呢?再加上公司近期资金不够,不能扩展机器怎么办?
2)解决上述的问题,咱们就要引出一个redis的策略,便是标题。web
淘汰策略redis
1)voltile-lru:从已设置过时时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
2)volatile-ttl:从已设置过时时间的数据集(server.db[i].expires)中挑选将要过时的数据淘汰
3)volatile-random:从已设置过时时间的数据集(server.db[i].expires)中任意选择数据淘汰
4)allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
5)allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
6)no-enviction(驱逐):禁止驱逐数据数据库
使用淘汰策略是能够把上面的问题暂时顶过去,可是会出现一系列的问题。
1.内存是腾出来了,可是这样缓存在其中的数据却出去了,万一我须要再次调用缓存中的数据又怎么解决?
2.前段时间没有访问的,如今火起来了,个人缓存中没有,一下压力进入DB怎么办?
3.使用上面的解决方式,会暴露出问题也是没办法的,毕竟鱼和熊掌不可兼得。咱们得先解决当下的问题不是。上面会总结出一个词语缓存命中率缓存