use*_*446 14 ttl redis cache-expiration
当生存时间达到0时,我的redis服务器不会删除密钥.
这是一个示例代码:
redis-cli
>SET mykey "ismykey"
>EXPIRE mykey 20
#check TTL
>TTL mykey
>(integer) 17
> ...
>TTL mykey
>(integer) -1
#mykey chould have expired:
>EXISTS mykey
>(integer) 1
>#oh still there, check its value
>GET mykey
>"ismykey"
Run Code Online (Sandbox Code Playgroud)
如果我通过redis检查信息返回,则表示0个密钥已过期.
任何的想法?
谢谢.
Joa*_*son 21
因为你正在做'...',所以很难肯定,但我会说你在那部分设置了mykey,这将有效地消除过期.
仅当使用DEL命令删除密钥或使用SET或GETSET命令覆盖密钥时,才会清除超时
返回值
整数回复:TTL以秒为单位,当密钥不存在或没有超时时为-1.
编辑:请注意在Redis 2.8中此行为已更改
从Redis 2.8开始,如果错误发生更改,则返回值:
如果该键不存在,则返回-2.
如果密钥存在但没有关联的到期,则该命令返回-1.
换句话说,如果您的密钥存在,它似乎是持久的,即没有任何到期设置.
编辑:似乎我可以重现这个,如果我在REDIS从服务器上创建密钥,从服务器将不会删除没有主输入的密钥,因为通常你不会在从站本地创建密钥.这是这种情况吗?
然而,虽然连接到主服务器的从服务器不会独立地使密钥过期(但是会等待来自主服务器的DEL),但它们仍将采用数据集中存在的过期的完整状态,因此当从属服务器被选为掌握它将能够独立地使密钥到期,充分充当主人.
| 归档时间: |
|
| 查看次数: |
15637 次 |
| 最近记录: |