Kur*_*den 3 php redis phpredis
我有一个非常简单的php redis应用程序,可以在某些事件中创建密钥.所有钥匙都只是柜台,过期时间为24小时.基本上是每个键24小时滚动窗口,以收集一些统计信息.
if ($redis->exists($key)) {
$redis->incr($key);
}
else {
$redis->set($key, '1');
$now = time(); // current timestamp
$redis->expireAt($key, $now + 86400);
}
Run Code Online (Sandbox Code Playgroud)
当我使用$list = $redis->keys("*");(或在redis-cli控制台中keys *)提取所有键的概述时,我会怀疑按创建日期按时间顺序排列.然而,事实并非如此.它们都没有按字母顺序排序,按价值排序......
所以我的问题是,这个列表是如何排序的?
首先,不要使用keys *它是为生产而设计的调试功能,你可以杀死你的服务器......如果你需要安全地枚举DB中的所有键,请使用SCAN函数LIMIT.
无论如何结果keys或scan没有以任何方式排序,结果的顺序与redis的哈希表的内部存储器结构有关.
关于你的php脚本,你可以通过一个命令来完成,而不需要exists set expireat运行:
SET key 1 EX 86400 NX
EX 86400 平均值从现在起86400(1天)后到期
NX 意味着只有在密钥不存在时才创建密钥.
如果此命令返回(nil)运行常规,则INCR key表示密钥已存在.BTW INCR命令不会删除您的过期设置.
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |