redis过期策略

2018-12-02  本文已影响0人  IT菜鸟学习

redis的过期策略有三种

在 Redis 中, 常规操作由 redis.c/serverCron 实现, 它主要执行以下操作

# The range is between 1 and 500, however a value over 100 is usually not
# a good idea. Most users should use the default of 10 and raise this up to
# 100 only in environments where very low latency is required.
hz 10

该策略不是统计所有的数据,是随机测试一批设置了过期时间的key并进行处理。测试到过期的key将被删除。每10秒做10次如下步骤:

  1. 随机测试设置了100个过期时间的key
  2. 删除所有已发现的过期的key
  3. 若删除的key超过25则重复步骤1

Redis-3.0.0中的默认值是10,代表每秒钟调用10次后台任务。

被动删除(CPU友好,内存不友好)

只有key被操作时候(如get),redis才会检查该key是否过期,如果过期则直接删除并返回NULL。

  1. 这种过期策略对cpu是友好的,删除操作只有在调用该key的时候才会进行,不会在其他的expire key上浪费无谓的CPU时间。
  2. 但是这种策略对内存是不友好的,一个key已经过期,但是他在操作之前不会被删除的,仍然占据内存空间。
主动删除

先说一下时间事件,对于持续运行的服务器来说,服务器需要定期对自身的资源和状态进行必要的检查和整理,从而服务器维持在一个健康稳定的状态,这类操作统称为常规操作(cron job)

  1. maxmemory
    当前已用内存超过maxmemory限定时,会触发主动清除策略

转自:https://www.cnblogs.com/chenpingzhao/p/5022467.html
https://chengyuanjian.github.io/redis/2016-10/redis-expired-strategy.html

上一篇 下一篇

猜你喜欢

热点阅读