redis批量删除某种pattern的key方法
date
Feb 11, 2019
slug
redis批量删除某种pattern的key方法
status
Published
tags
Redis
summary
type
Post
Redis key中冒号的作用
在spring boot项目中使用Cacheable注解的时候,除了在注解中定义key之后,在redis中查看发现定义的key还有一串很长的包名,用冒号隔开。早期redis只能存储字符串,对于一些结构化的数据,想存进redis的时候就用冒号隔开,例如:
所以这个冒号**在redis中并无什么功能上和性能上的作用**,只是用来标记key的命名空间方便程序取值的,现在用哈希表实现同样的功能
但是用冒号标记key的命名空间成为了key命名的一种约定,项目上还是使用这种命名方法,而且[官方文档](<https://redis.io/topics/data-types-intro>)也是建议这种命名key。通过redis manager连接redis发现,redis manager会将带冒号的可以整理成树状结构。实际上redis的key是二进制安全的,所以不一定只有字符串作为key,图片都可以,官方文档是这么说的:
Redis keys are binary safe, this means that you can use any binary sequence as a key, from a string like "foo" to the content of a JPEG file. The empty string is also a valid key.
如何在shell中批量删除某个命名空间下的所有key
redis的del命令可以批量删除,但是必须把所有key都写在命令参数里面
key的数量少还好,如果上万个key实践起来不现实。xarges命令可以实现该功能,具体方法如下:
这样可以删除所有以pattern开头的key,其他类型的key可以参考redis [keys命令文档](<https://redis.io/commands/KEYS>)里面正则表达式的写法,下面实践一下:
先查看一下有多少这种规则的key,然后通过xargs命令批量删除,可以看到已经成功删除了19个key。
参考链接: