全部
常见问题
产品动态
精选推荐
功能建议

分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
如何清除 Redis 缓存的方式分为全量清除和精准清除

管理 管理 编辑 删除

清除 Redis 缓存的方式分为全量清除精准清除,需根据业务场景选择(生产环境慎用全量清除),以下是详细方法:

一、通过 Redis 命令行(redis-cli)操作

1. 全量清除所有缓存(慎用!清空整个 Redis)

适用于测试环境、缓存全量失效等场景,分两种清空策略:

bash

运行


# 方式1:异步清空(非阻塞,速度快,推荐)
redis-cli FLUSHALL ASYNC

# 方式2:同步清空(阻塞直到完成,不推荐生产)
redis-cli FLUSHALL

# 方式3:清空当前选中的数据库(默认db0)
redis-cli FLUSHDB ASYNC  # 异步
redis-cli FLUSHDB        # 同步



  • 区别:FLUSHALL 清空所有数据库,FLUSHDB 仅清空当前数据库;ASYNC 异步删除(Redis 4.0+ 支持),不阻塞主线程。

2. 精准清除指定缓存(推荐生产环境)

按 key 精准删除,避免影响其他缓存:

bash

运行


# 删除单个key
redis-cli DEL key1

# 删除多个key
redis-cli DEL key1 key2 key3

# 删除匹配规则的key(批量删除,需注意性能)
# 方式1:通过redis-cli结合通配符(适用于少量key)
redis-cli KEYS "user:*" | xargs redis-cli DEL

# 方式2:使用SCAN替代KEYS(避免阻塞,适用于大量key)
redis-cli --scan --pattern "order:*" | xargs redis-cli DEL



  • 注意:KEYS 命令在数据量大时会阻塞 Redis,生产环境优先用 SCAN 遍历删除。

3. 清除过期缓存(Redis 自动清理,也可手动触发)

Redis 会异步清理过期 key,也可手动触发主动清理:

bash

运行


# 主动触发过期key清理(非阻塞)
redis-cli EXPIRE key1 0  # 手动设置key1过期(立即失效)
redis-cli MEMORY PURGE   # 释放过期key占用的内存(Redis 4.0+)


二、通过编程语言 SDK 操作

以 Python(redis-py)和 Java(Jedis)为例:

1. Python 示例

python

运行


import redis

# 连接Redis
r = redis.Redis(host='localhost', port=6379, password='your_pwd', db=0)

# 1. 删除单个key
r.delete('key1')

# 2. 删除多个key
r.delete('key1', 'key2', 'key3')

# 3. 批量删除匹配规则的key(SCAN遍历)
for key in r.scan_iter(match='user:*', count=1000):
    r.delete(key)

# 4. 清空所有缓存(慎用)
r.flushall(asynchronous=True)  # 异步清空
# r.flushdb(asynchronous=True)  # 清空当前db


2. Java(Jedis)示例

java

运行


import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.Set;

public class RedisClearCache {
    public static void main(String[] args) {
        // 连接Redis
        Jedis jedis = new Jedis("localhost", 6379);
        jedis.auth("your_pwd");

        // 1. 删除单个key
        jedis.del("key1");

        // 2. 删除多个key
        jedis.del("key1", "key2", "key3");

        // 3. 批量删除匹配规则的key(SCAN遍历)
        ScanParams params = new ScanParams().match("order:*").count(1000);
        String cursor = "0";
        do {
            ScanResult<String> result = jedis.scan(cursor, params);
            Set<String> keys = result.getResult();
            if (!keys.isEmpty()) {
                jedis.del(keys.toArray(new String[0]));
            }
            cursor = result.getStringCursor();
        } while (!cursor.equals("0"));

        // 4. 清空所有缓存(慎用)
        jedis.flushAllAsync(); // 异步清空
        // jedis.flushDBAsync(); // 清空当前db

        jedis.close();
    }
}


三、生产环境注意事项

  1. 禁止无脑 FLUSHALL:全量清空会导致缓存雪崩,业务直接查数据库,可能压垮 DB。
  2. 批量删除用 SCANKEYS * 会遍历所有 key,阻塞 Redis 主线程,生产环境必须用 SCAN 分批遍历。
  3. 设置过期时间兜底:即使忘记手动删除,通过 EXPIRE key seconds 设置过期时间,避免缓存永久无效。
  4. 集群环境处理
  5. 备份与回滚:操作前可通过 BGSAVE 备份 RDB 文件,若误删可恢复。

四、常见问题排查

  • 执行 DEL key 返回 0:key 不存在,检查 key 名称 / 数据库(默认 db0,是否连错 db)。
  • 批量删除无效果:通配符规则错误(如 user* 而非 user:*),或 Redis 版本不支持 SCAN(需 Redis 2.8+)。


{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

小码二开 最后编辑于2025-12-29 11:07:14

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
20
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服