Redis中数据的过期策略及规则(redis 过期规则)

Redis作为一种K-V型存储引擎,拥有快速的存储和读取数据的能力,具有很好的性能优势和极具灵活性,而其中涉及到的过期数据问题也一直备受关注,本文旨在简单介绍下Redis中过期策略及规则。

Redis中存在两种过期策略——自动删除和懒惰删除。前者在写入数据时就指定TTL,而后者每次读取或更新数据时,需要检测过期时间,若当前时间比过期时间晚多少被视为过期,将被自动删除。

Redis中一般采用延迟删除的方式,即定时检测过期的key,并进行处理。其具体的实现方式是每隔一段时间,它会统计出需要处理的key的个数,这也是引入延迟删除的考虑之一,可以允许程序更多的处理时间。

Redis中还存在删除策略,具体可分为设置key过期策略、定时检测和处理过期key、设置过期回收策略等三种。

1、指定Key过期策略

Redis为允许开发者指定Key过期策略提供了SETEX、SETNX、PSETEX这三种命令。其中SETEX可指定某个key在指定时间后过期,而SETNX则可指定某个key只在它不已存在时才被设置,也就是允许在指定的时间内防止新的值被写入;PSETEX与SETEX类似,只是TTL的单位由秒改为毫秒。

2、定时检测和处理过期Key

Redis默认每隔一分钟,会启动一次此操作,它会统计出需要处理的key的个数,每次处理至多100条记录,这也是引入延迟删除的考虑之一,可以允许程序更多的处理时间。

3、设置过期回收「TTL」策略

Redis还支持TTL值为负数,当检测到回收超时Key时,Redis会立即进行回收,而不是等待定时器运行时间的到来。

综上所述,Redis的过期策略及规则非常完善,值得开发者充分利用。代码示例如下:

// 设置某个key过期时间为30秒

$redis->setex(‘name’,30, ‘Redis’);

// 获取key的TTL(以秒为单位)

$ttl=$redis->ttl(‘name’);

// 判断key是否存在

if($redis->exists(‘name’)){

$redis->delete(‘name’);

}


数据运维技术 » Redis中数据的过期策略及规则(redis 过期规则)