【问题标题】:laravel redis creating a set with ttl?laravel redis 用 ttl 创建一个集合?
【发布时间】:2017-03-09 14:08:10
【问题描述】:

所以为了创建一个我可以做的集合

Redis::sadd('example',[1,4,6,1,])

我尝试了许多变体来创建一个 ttl 无效的集合:

Redis::sadd('example',100,[1,4,6,1,])
Redis::sadd('example',[1,4,6,1,],100)
Redis::saddex('example',100,[1,4,6,1,])
Redis::saddex('example',[1,4,6,1,],100)

【问题讨论】:

  • 你试过在sadd后使用expire吗?
  • @ChrisTanner yap 它的工作谢谢,没有内置函数?
  • 不,想要使整个集合过期的用例是什么?另一种数据类型可能更适合。
  • @ChrisTanner 我正在使用集合来存储缓存标签,每个缓存都有一个 ttl,所以我不希望出现缓存被刷新但集合仍然存在以及何时存储新缓存的情况旧标签会保留,缓存必须是一个简单的 redis 字符串,所以我会同步它们的 ttl 时间以确保一致

标签: php laravel laravel-5 redis predis


【解决方案1】:

对于其他参考,如果您想检查 [sorted set] 键(在您的情况下为“示例”)是否存在,您可以执行 ff:

建议 1:(你喜欢什么)

$iTtlRedisKey = Redis::ttl('example');
if ($iTtlRedisKey <= 0) {
    Redis::sadd('example', [1,4,6,1]);
    Redis::expire('example', 30);
}

$aSortedExampleSets = Redis::smembers('example');
// array(3) { [0]=> string(1) "1" [1]=> string(1) "4" [2]=> string(1) "6" }

提案2:使用[exists]方法

$bCheckRedisKey = Redis::exists('example');
if (boolval($bCheckRedisKey) !== true) {
    Redis::sadd('example', [1,4,6,1]);
    Redis::expire('example', 30);
}

$aSortedExampleSets = Redis::smembers('example');
// same results as well.

【讨论】:

  • 感谢它不完全是我的要求,但它确实展示了如何使用 expire 方法:)
猜你喜欢
  • 1970-01-01
  • 2019-03-21
  • 2020-07-03
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 2021-02-05
  • 2013-09-12
  • 1970-01-01
相关资源
最近更新 更多