优雅删除Redis中以xx开头的key

这篇具有很好参考价值的文章主要介绍了优雅删除Redis中以xx开头的key。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、暴力删除

使用keys * 扫描所有的key,然后批量删除。key较多时,会阻塞redis,生产环境中需要慎重,适合并发小,keys数量少的场景。

关键命令:

docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  keys "a*" |xargs redis-cli -h 172.17.0.17 -p 6379 -n 0 del"

[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a1 1"
OK
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a2 2"
OK
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a3 3"
OK
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  keys "a*""
1) "a1"
2) "a2"
3) "a3"
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  keys "a*" |xargs redis-cli -h 172.17.0.17 -p 6379 -n 0 del"
(integer) 3
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  keys "a*""
(empty array)

###如果需要密码,可以加上-a参数

2、优雅删除

关键命令:

docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0 --scan --pattern "a*" |xargs -n 1000 -r redis-cli -h 172.17.0.17 -p 6379 -n 0 del"

[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a1 1"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a2 2"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a3 3"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  --scan --pattern "a*""
a2
a1
a3
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0 --scan --pattern "a*" |xargs -N 1000 redis-cli -h 172.17.0.17 -p 6379 -n 0 del"
xargs: unrecognized option: N
BusyBox v1.31.1 () multi-call binary.

Usage: xargs [OPTIONS] [PROG ARGS]

Run PROG on every item given by stdin

        -0      Input is separated by NULs
        -a FILE Read from FILE instead of stdin
        -r      Don't run command if input is empty
        -t      Print the command on stderr before execution
        -p      Ask user whether to run each command
        -E STR,-e[STR]  STR stops input processing
        -I STR  Replace STR within PROG ARGS with input line
        -n N    Pass no more than N args to PROG
        -s N    Pass command line of no more than N bytes
        -P N    Run up to N PROGs in parallel
        -x      Exit if size is exceeded
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0 --scan --pattern "a*" |xargs -n 1000 -r redis-cli -h 172.17.0.17 -p 6379 -n 0 del"
(integer) 3
[root@VM-0-17-centos ~]# 
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  --scan --pattern "a*""
[root@VM-0-17-centos ~]# 
###如果需要密码,可以加上-a参数

备注:

xargs -n 参数的作用,表示每次执行的参数数量文章来源地址https://www.toymoban.com/news/detail-518322.html


### 注意-n参数,可以每次删除适量的

[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a1 3"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a2 3"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0  set a3 3"
OK
[root@VM-0-17-centos ~]# docker run --rm --name redis-cli -it goodsmileduck/redis-cli sh -c "redis-cli -h 172.17.0.17 -p 6379 -n 0 --scan --pattern "a*" |xargs -n 1 -r redis-cli -h 172.17.0.17 -p 6379 -n 0 del"
(integer) 1
(integer) 1
(integer) 1

到了这里,关于优雅删除Redis中以xx开头的key的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式系列|(以xx开头xx结尾提取、切分、替换)

    章节 第一章链接: 正则表达式系列|(以xx开头xx结尾提取切分) 正则表达式是对字符串操作的一种逻辑公式;作用:检索、替换那些符合某个模式(规则)的文本,可以通过一些设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。 结果 结果 matcher.group(1)表示获取第一

    2024年02月14日
    浏览(40)
  • redis 设置expire=0和直接调用delete删除key的区别

    问题起源于生产上应用redis做的一个临时缓存的场景,调用方首先调用某个容器的生成接口,该接口会生成临时缓存的数据放到redis中,然后调用方在调用获取数据内容的接口从任何一台容器中获取放置在redis中的临时数据。 由于临时数据仅仅只是为了在第二步获取数据内容时

    2024年02月16日
    浏览(41)
  • 小程序出现 非 h5 平台 :key 不支持表达式 ‘xx‘ 解决方法

    执行代码的时候,uniapp的h5平台可以,但是微信小程序终端报如下错误:

    2024年04月24日
    浏览(29)
  • AES解密报错java.security.InvalidKeyException: Invalid AES key length: xx bytes

    由于与其它系统接口对接,需要进行加密处理。 对接系统采用AES加密方式,作为接收方获取加密内容,通过AES解密拿到数据。 解密过程中遇到报错如下: 出现此错误,主要原因是秘钥长度不符合要求所导致的。 AES允许128位,192位或256位密钥长度。 这也就意味着秘钥只能是

    2024年02月06日
    浏览(38)
  • 优雅的删除链表元

    王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 在数据结构:链表中,我们实现了链表的删除方法,但代码看起来并不“优雅”,那么今天我们就来尝试使用多种方法,“优雅”的实现链表的删除方法。 今天我们从一道练习题开始:

    2024年02月01日
    浏览(26)
  • AES解密报错Invalid AES key length: xx bytes与Given final block not properly padded的解决方法

    最近和其它系统联调接口,用到了Java的AES加解密。 由其它系统AES加密,本人的系统获取到加密报文后,AES解密,获取到内容。 本来是比较简单的,可是其它系统只提供了秘钥,没有提供解密方法,解密方法需要我们自己写…… 正常应该是加密方提供解密方法的吧,我觉得…

    2024年02月01日
    浏览(44)
  • python 删除字典的某个key

      字典是Python中的一种数据类型,它是一个无序的键值对集合。在实际的编程中,我们经常需要删除字典中的某个键值对。本文将从多个角度分析Python删除字典中的某个key的方法。 一、使用del Python内置的del可以删除字典中的某个键值对。例如,我们有一个字典

    2024年02月05日
    浏览(48)
  • 【Redis】Redis键(key)

    keys * 查看当前库所有的key exists key 判断某个key是否存在,存在几个则返回几,不存在则返回0 type key 查看key的数据类型 del key 删除指定的key数据,存在数据删除则返回1,不存在则返回0. unlink key 非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作。

    2023年04月19日
    浏览(29)
  • Java将一个list<T>指定key转换成Map<list>

    经常有这种,一个数据库里有多个字段,但是数据库只能返回一个list,你group分组了也没用。 然后你得到的是一个list,你想根据type分组,大概是这样 [ {\\\"name\\\":\\\"牛奶\\\",\\\"desc\\\":\\\"吃了有力气\\\",\\\"type\\\":\\\"食物\\\"}, {\\\"name\\\":\\\"猫耳朵\\\",\\\"desc\\\":\\\"富含丰富油脂\\\",\\\"type\\\":\\\"食物\\\"}, {\\\"name\\\":\\\"电脑\\\",\\\"desc\\\":\\\"可以提升

    2024年01月24日
    浏览(53)
  • SpringBoot缓存注解@Cacheable之自定义key策略及缓存失效时间指定

    1. 项目依赖 本项目借助 SpringBoot 2.2.1.RELEASE  +  maven 3.5.3  +  IDEA  +  redis5.0 进行开发 开一个 web 服务用于测试 1. key 生成策略 对于 @Cacheable 注解,有两个参数用于组装缓存的 key cacheNames/value: 类似于缓存前缀 key: SpEL 表达式,通常根据传参来生成最终的缓存 key 默认的 redisK

    2024年02月19日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包