今天看了同时的代码, 发现自己对redis的了解就是渣渣呀.
$redis->set($key, $data, ['nx', 'ex' => $frequency]]
字符串的应用, 一般我们就是用作缓存, 或者自增键加锁使用. 其他业务很少用.
看到上面代码第一眼时我就懵逼了, 三参数可以是数组.
先解释下上面代码意思 : $key
是否存在, 存在则设 $frequency
秒 ttl
有效期.
说下使用场景: 我们弄了个预警服务, 怕重复报警, 限制频率 $frequency
秒内仅报警一次.
nx, ex
的介绍 细节如下面文档:
SET
SET key value [EX seconds] [PX milliseconds] [NX|XX]
将字符串值 value
关联到 key
。
如果 key
已经持有其他值, SET
就覆写旧值,无视类型。
对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
可选参数
从 Redis 2.6.12
版本开始, SET 命令的行为可以通过一系列参数来修改:
EX second
:设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。PX millisecond
:设置键的过期时间为 millisecond
毫秒。 SET key value PX millisecond
效果等同于 PSETEX key millisecond value
。NX
:只在键不存在时,才对键进行设置操作。 SET key value NX
效果等同于 SETNX key value
。XX
:只在键已经存在时,才对键进行设置操作。