gpt4 book ai didi

php - Redis key 不会过期 - Laravel、Predis

转载 作者:IT王子 更新时间:2023-10-29 05:56:36 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.4 , 与 Predis和最新的Redis (或 Redis for Windows )。

key 正在毫无问题地保存。所以,我怀疑这是配置问题。

问题是它们不会过期。 key 会重复使用,直到过期...类似于 session 的工作方式。

如果 key 不存在,我会创建一次。按照同样的逻辑,我然后设置到期时间。

在 Controller 中,我有

use Illuminate\Support\Facades\Redis;

在其中一个函数中,获取连接实例:

$redis = Redis::connection();

在创建 key 之前,我会检查是否存在(简化),然后创建并设置到期时间。

if(!$redis->exists($some_unique_key))
{
//set the key
$redis->set($some_unique_key, 'Some Value'));
//set the expiration
//I understand this means expire in 60s.
$redis->expire($some_unique_key,60);
}

为什么它不能使 key 过期?

正如我提到的,其他一切正常。如果我监控,我会看到 key 更新没有问题,并且可以查询它。

郑重声明,我已阅读:

Laravel 文档中没有关于过期的内容:

更新 1

调查设置(更新) key 重置过期的可能原因

更新 2

使用@for_thestack 的推理(在 REDIS 命令中)提出解决方案。使用代码查看我的答案。随意投票 @for_thestack :)

最佳答案

对于使用 Laravel 的人来说,可以使用 EX param (expire resolution) + ttl。在下面的示例中,EX 表示 TTL 以秒为单位(请参阅 Redis 文档:https://redis.io/commands/set)。所以下面的结果将是存储在 $key 下的 $val 将在 35 秒后被删除。

Redis::set($key, $val, 'EX', 35);

在 predis 中你可以使用相同的,实际上 Laravel 在后台使用 predis。

关于php - Redis key 不会过期 - Laravel、Predis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43549670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com