Redis六种内存淘汰策略&&三种缓存淘汰策略(帮你彻底理清淘汰策略,在阅读文章时发现先淘汰缓存再更新数据库不可行,又有人说可行,其实真相是这样的)

一.前言

(1)注意区分六种内存淘汰策略和常用三种缓存淘汰策略,
前者在redis.conf里配置,后者则是java代码里体现
(2)六种策略
①noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。
②allkeys-lru: 所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
③volatile-lru: 只限于设置了 expire 的部分; 优先删除最近最少使用又过期(less recently used ,LRU) 的 key。
④allkeys-random: 所有key通用; 随机删除一部分 key。
⑤volatile-random: 只限于设置了 expire 的部分; 随机删除一部分过期 key。
⑥volatile-ttl: 只限于设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key。
注意:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。
(3)怎么设置六种淘汰策略
在redis目录下打开redis.windows.conf,找到下面黑色字
maxmemory

maxmemory-policy noeviction
解析:maxmemory 设置redis使用最大内存,比如设置成100mb,如下:
maxmemory 100mb
maxmemory-policy noeviction 设置redis在超最大内存时采取策略,默认是noeviction策略

二.redis删除key三种策略

①主动删除:
volatile-lru,、volatile-random 、 volatile-ttl、allkeys-lru、allkeys-random、noeviction
②被动删除:读写某个早就过期的key时才会删除这个key
③被动清理:内存满了会主动删除一大批key(maxmemory 100mb)

三.缓存淘汰策略(java代码体现逻辑)

1.Cache Aside Pattern(旁路缓存模式)

写 :先更新 DB,更新好后直接删除 cache,当然也可以先更新DB,然后让cache过期,选中哪种都行反正都是能让缓存无效

读 :

从 cache 中读取数据,读取到就直接返回,cache中读取不到的话,就从 DB 中读取数据返

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值