17_redis缓存过期淘汰策略

面试题

问题1:生产上你们的redis内存设置多少?

问题2:如何配置、修改redis的内存大小?

问题3:redis清理内存的方式?定期删除和惰性删除了解过吗?

问题4:redis缓存淘汰策略?

问题5:redis的LRu了解过吗?可否手写一个LRu算法?


redis默认内存多少?在哪里查看? 如何设置修改?

查看Redis最大占用内存

打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。


redis默认内存多少可以用?

在这里插入图片描述


一般生产上你如何配置?

一般推荐Redis设置内存为最大物理内存的四分之三,也就是0.75


如何修改redis内存设置

通过修改文件配置:

在这里插入图片描述

通过命令修改:

在这里插入图片描述


什么命令查看redis内存使用情况?
info memory

真要打满了会怎么样? 如果Redis内存使用超出了设置的最大值会怎样?

改改配置,故意把最大值设为1个byte试试

OOM

设置了maxmemory的选项,假如redis内存使用达到上限

没有加上过期时间就会导致数据写满maxmemory 为了避免类似情况,引出下一章内存淘汰策略


redis缓存淘汰策略

删除策略

如果一个键是过期的,那它到了过期时间之后是不是马上就从内存中被被删除呢??如果回答yes,你自己走还是面试官送你?如果不是,那过期后到底什么时候被删除呢??是个什么操作?

定时删除

总结:对CPU不友好,用处理器性能换取存储空间(拿时间换空间)

在这里插入图片描述


惰性删除

总结:对memory不友好,用存储空间换取处理器性能(拿空间换时间)

在这里插入图片描述


定期删除

定期抽样key,判断是否过期,但存在漏网之鱼

在这里插入图片描述


在这里插入图片描述

内存淘汰策略

种类:(redis6.0.8版本)

  • noeviction: 不会驱逐任何key
  • allkeys-lru: 对所有key使用LRU算法进行删除
  • volatile-lru: 对所有设置了过期时间的key使用LRU算法进行删除
  • allkeys-random: 对所有key随机删除
  • volatile-random: 对所有设置了过期时间的key随机删除
  • volatile-ttl: 删除马上要过期的key
  • allkeys-lfu: 对所有key使用LFU算法进行删除
  • volatile-lfu: 对所有设置了过期时间的key使用LFU算法进行删除

2个维度:

  • 过期键中筛选
  • 所有键中筛选

4个方面:

  • LRU
  • LFU
  • random
  • ttl

组成8个选项


你平时用哪一种?

allkeys-lru: 对所有key使用LRU算法进行删除

如何配置、修改?

方式一:使用配置文件

在这里插入图片描述

方式二:使用命令

config set maxmemory-policy allkeys-lru


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值