Laravel 5.5-更新Redis缓存而没有到期时间

时间:2018-08-08 21:57:40

标签: laravel caching redis laravel-5.5

我想更新该值而不指定到期时间或从缓存中删除该项目并再次存储它。我是这样尝试的:

创建后:

Cache::put('post' . $id, $post, 10);

更新后:

Cache::put('post' . $id, $post);

但是,它不会在没有到期时间的情况下进行更新。

这不可能吗?

2 个答案:

答案 0 :(得分:0)

我不确定是否可以在不包括分钟数的情况下覆盖一个值。但是,可能的解决方法是将日期和时间与您的帖子一起存储,并添加逻辑以根据需要进行调整。

创建示例:

Cache::put('post' . $id, $post, 10);
Cache::put('time:post' . $id, Carbon::now(), 10);

更新示例:

$time = Cache::get('time:post' . $id);
Cache::put('post' . $id, $post, $time->diffInMinutes(Carbon::now()));

答案 1 :(得分:0)

Laravel 5.7 最近的一个例子:

function CountWeek()
{
    if (!Cache::get('count_for_week:init')) {
        Cache::put('count_for_week:init', now()->addDays(7));
        Cache::put('count_for_week:value', 1, now()->addMonth(1));
        return true;
    }

    $time = Cache::get('count_for_week:init');
    Cache::put('count_for_week:value', (Cache::get('count_for_week:value') ?? 0) + 1, $time->diffInMinutes(now()));
}