T5清理redis或file缓中带tag的指定缓存

T5清理redis或file缓中带tag的指定缓存

前置条件

项目接口中使用了缓存记录冷数据,然后在后台管理界面中提供了手动管理缓存的功能,可删除指定key的缓存或者批量删除。

正文

下面是一个简单事例

接口controller中使用带tag缓存

 public function getCategories(){
        $data=Cache::tag(CACHE_TAG)->get(CACHE_CATEGORIES);
        if($data==null){
            $data = Db::name('category')
                ->where('status',1)
                ->select();
            Cache::tag(CACHE_TAG)->set(CACHE_CATEGORIES,$data,3600*24*30);
        }

        return $data;
    }

后台管理缓存

缓存数据初始页面

public function cache(){

        //加载application下的配置
        $configuration = Config::load(APP_PATH.'config.php');

        $type=$configuration['cache']['type'];

        //缓存中使用了tag,此处获取tag值,在redis服务器中可以查看到该tag包含的所有缓存键
        $key   = 'tag_' . md5(CACHE_TAG);

        //此处使用application下的cache配置,如果直接使用Cache::get方法,加载的cache来自后台config.php所定的缓存类型
        //目的是为了解决application与后台配置的缓存类型不同,导致加载出错
        $value = Cache::connect($configuration['cache'])->get($key);

        $tagKeys = array_filter(explode(',', $value));
        $data = [];

        //redis缓存的处理
        if('redis'==strtolower($type)) {

            foreach ($tagKeys as $id => $key) {
                $data[$id]['sequence'] = $id + 1;
   
在Linux系统下清理Redis缓存可以通过多种方式实现,具体取决于需要清理的范围和场景。以下是常见的几种清理方式及对应的操作方法: ### 清理所有Redis缓存 如果需要清除Redis中存储的所有数据,可以使用`FLUSHALL`命令。该命令会删除Redis中所有的键值对,适用于所有数据库实例。 ```bash redis-cli flushall ``` 此操作会清除所有数据库的缓存数据[^1]。 ### 清理当前数据库的缓存 如果只想清除当前选中的数据库缓存,可以使用`FLUSHDB`命令。Redis默认支持多个数据库(通常为16个),通过`SELECT`命令可以切换数据库。 ```bash redis-cli flushdb ``` 此操作会删除当前数据库的所有键值对。 ### 清理指定缓存键 如果需要删除特定的缓存键,可以使用`DEL`命令。例如,若要删除名为`mykey`的缓存键,可以执行以下命令: ```bash redis-cli del mykey ``` 此操作仅删除指定缓存键,不影响其他数据。 ### 清理具有过期时间的缓存 如果需要清理具有过期时间的缓存,可以通过设置键的过期时间来实现。例如,若要为`mykey`设置10秒的过期时间,可以使用以下命令: ```bash redis-cli expire mykey 10 ``` Redis会在10秒后自动删除该键。若需要取消过期时间,可以使用`PERSIST`命令: ```bash redis-cli persist mykey ``` 此操作会移除键的过期时间,使其变为持久化存储。 ### 使用脚本批量清理缓存 如果需要批量清理缓存,可以通过编写脚本实现。例如,以下是一个简单的Shell脚本示例,用于删除所有以`prefix:`开头的键: ```bash redis-cli keys "prefix:*" | xargs redis-cli del ``` 此操作会删除所有匹配的键,适用于大规模清理缓存的场景。 ### 注意事项 - **数据持久化**:清理缓存不会影响Redis的持久化数据(如RDB文件AOF日志),但如果需要永久删除数据,应确保持久化文件也被清理。 - **性能影响**:大规模清理缓存可能会影响Redis性能,建议在低峰期执行。 - **权限管理**:确保执行清理操作的用户具有足够的权限,避免误操作导致数据丢失。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值