今天看了同时的代码, 发现自己对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 :只在键已经存在时,才对键进行设置操作。