Redis——》内存淘汰策略

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】

Redis——》内存淘汰策略

  • 一、内存淘汰策略
  • 二、设置内存淘汰策略
    • 方式1:直接修改redis.conf文件
    • 方式2:通过客户端修改
  • 三、根据业务选择内存淘汰策略
    • 场景1:业务数据有明显的冷热数据区分
    • 场景2:业务数据没有明显的冷热数据区分
    • 场景3:业务需要置顶(置顶文章、置顶视频)
  • 四、其它设置
    • 1、设置缓存大小
    • 2、设置过期时间

Redis——》内存淘汰策略_第1张图片

一、内存淘汰策略

淘汰策略 淘汰的数据范围 使用哪种算法进行淘汰
volatile-lru 有过期时间的key lru算法
allkeys-lru 所有key lru算法
volatile-lfu 有过期时间的key lfu算法
allkeys-lfu 所有key lfu算法
volatile-random 有过期时间的key 随机
allkeys-random 所有key 随机
volatile-ttl 有过期时间的key 越早过期的越先被淘汰
noeviction 不淘汰任何数据,直接返回错误

二、设置内存淘汰策略

方式1:直接修改redis.conf文件

# 打开conf文件
vim redis.conf

# 设置maxmemory-policy
maxmemory-policy noeviction

# 保存并退出

方式2:通过客户端修改

# 进入客户端
./redis-cli -h 10.122.139.50 -p 6379

# 设置maxmemory-policy
config set maxmemory-policy allkeys-random

# 查看maxmemory-policy
config get maxmemory-policy

# 覆盖配置
config rewrite

# 退出客户端
exit

# 打开conf文件,会发现maxmemory-policy的值是最后一次设置的值
vim redis.conf

三、根据业务选择内存淘汰策略

场景1:业务数据有明显的冷热数据区分

建议:使用 allkeys-lru 策略
优点:把最近最常访问的数据留在缓存中,提升应用的访问性能。

场景2:业务数据没有明显的冷热数据区分

建议:使用 allkeys-random 策略

场景3:业务需要置顶(置顶文章、置顶视频)

建议:使用 volatile-lru 策略,同时不给这些置顶数据设置过期时间
优点:置顶的数据一直不会被删除,而其他数据会在过期时根据 LRU 规则进行筛选

四、其它设置

1、设置缓存大小

具体结合应用数据实际访问特点和成本开销来综合考虑。
一般建议把缓存容量设置为总数据量的 15% 到 30%,兼顾访问性能和内存空间开销。

CONFIG SET maxmemory 4gb

2、设置过期时间

# 60s后过期
expire key 60

你可能感兴趣的:(Redis,redis,内存,淘汰,lru,lfu)