【问题标题】:Laravel Redis / How to you flush only a specific redis database?Laravel Redis / 如何只刷新特定的 redis 数据库?
【发布时间】:2020-11-27 15:13:21
【问题描述】:

如您所知,Redis 可以有多个数据库,在我的 laravel 设置中,我定义了其中的 3 个,并且至少使用了 2 个

'0' (default)
'1' (cache)
'2' (queue)

这就是我在 config/database.php

中设置的内容

此外,由于某些需要,我使用flushall()方法清除所有缓存:

@Cache::flush();
@Redis::flushall();

但是,它也清除了我不想要的队列作业。那么有没有办法只刷新数据库 0 和数据库 1 而不是数据库 2?

【问题讨论】:

    标签: laravel caching redis laravel-6


    【解决方案1】:

    您可以同时使用selectflushdb 命令来仅刷新选定的数据库。

    选择具有指定从零开始的数字索引的 Redis 逻辑数据库。新连接始终使用数据库 0。

    删除当前选中数据库的所有键。

    以下将首先选择数据库1,然后仅刷新1

    Redis::select(1);
    Redis::flushdb();
    

    它将在redis中执行以下命令;

    1596794331.068032 [0 127.0.0.1:55088] "SELECT" "1"
    1596794331.071332 [1 127.0.0.1:55088] "FLUSHDB"
    

    【讨论】:

    • @RaheelHasan 只是文档 :) -- 希望它适用于您的情况。
    • Cache::flush() 怎么样?在某些地方,我使用 Cache 外观而不是 Redis 外观,例如我可以使用的 rememberForever,它在文档中是 Cache 类的方法。
    • @RaheelHasan 是的,它也可以。 github.com/laravel/framework/blob/7.x/src/Illuminate/Cache/… 它还在后台调用了相同的 redis 方法。
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2017-01-15
    • 2021-07-02
    相关资源
    最近更新 更多