欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis过期时间与缓存

程序员文章站 2022-07-14 19:04:24
...

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)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间是认为这些键是可以被删除的。