Redis过期时间与缓存

1、设置过期时间

EXPIRE   key  seconds       其中 seconds 参数标识键的过期时间,单位是秒。返回1表示设置成功,返回0则表示键不存在或设置失败。

TTL  key        查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是秒。当键不存在时该命令会返回 -2.

 PEXPIRE   key  seconds       其中 seconds 参数标识键的过期时间,单位是毫秒。返回1表示设置成功,返回0则表示键不存在或设置失败。

PTTL  key        查看一个键还有多久的时间会被删除。返回值是剩余的时间,单位是毫秒。当键不存在时该命令会返回 -2.

PERSIST  key    取消键的过期时间,即将键恢复成永久的。过期时间被成功清楚则返回1,否则返回0(键不存在或键本来就是永久的)

127.0.0.1:6379> set session:101 uid1314

OK

127.0.0.1:6379> expire session:101 120

(integer) 1

 127.0.0.1:6379> ttl session:101

(integer) 106

127.0.0.1:6379> ttl session:101

(integer) 93

127.0.0.1:6379> ttl session:101

(integer) -2

没有为键设置过期时间,既永久存在,这是建立一个键后的默认情况。TTL命令返回  -1。

在2.6版本中,无论键不存在还是键没有过期时间都会返回 -1,知道 2.8 版本后两种情况才会分别返回 -2 和 -1 两种结果。

2、实现缓存

当服务器内存有限时,如果大量地使用缓存键且过期时间设置的过长就会导致Redis占满内存;如果将缓存键的过期时间设置的过短,就可能导致缓存命中率过低并且大量内存白白地闲置。

很难为缓存键设置合理的过期时间,为此可以限制Redis能使用的最大内存,并让Redis按照一定的规则淘汰不需要的缓存键。

设置方法:修改配置文件的 maxmemory 参数,限制Redis最大可用内存大小(单位是字节),当超出这个限制时Redis会依据 maxmemory-policy 参数指定的策略来删除不需要的键直到Redis占用的内存小于指定的内存。

volatile-lru                使用LRU算法删除一个键(支队设置了过期时间的键)

allkeys-lru                使用LRU算法删除一个键

volatile-random        随机删除一个键(支队设置了过期时间的键)

allkeys-random        随即删除一个键

volatile-ttl                删除过期时间最近的一个键

noeviction               不删除键,只返回错误

LRU(Least Recently Used)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间是认为这些键是可以被删除的。

猜你喜欢

转载自decao.iteye.com/blog/2401073