我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis实现批量删除的三种方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis实现批量删除的三种方式

                                                           redis实现批量删除的三种方式

redis实现批量删除:

1、访问redis根目录    cd  /usr/local/redis-2.8.19

2、登录redis:redis-cli -h 127.0.0.1 -p 6379 (其中,127.0.0.1可以写成服务器的IP地址,6379为端口号)

3、查看所有key值:keys *

4、删除指定索引的值:del key

5、清空整个 Redis 服务器的数据:flushall

6、清空当前库中的所有 key:flushdb

【第一种方式】:

下面是批量删除以“key_”开头的所有redis数据 数量为100个

redis-cli -h (IP地址) -p 6379 (端口号:6379) KEYS key_* | xargs redis-cli (-h (IP地址) -p 6379 (端口号:6379)) del 
 
=>[执行后返回的结果影响数量]:(integer) 100[数量100个]

【上述命令中 DEL函数的具体用法】:

DEL key [key ...]

删除给定的一个或多个 key 。

不存在的 key 会被忽略。

时间复杂度:

O(N), N 为被删除的 key 的数量。

删除单个字符串类型的 key ,时间复杂度为O(1)。

删除单个列表、集合、有序集合或哈希表类型的 key ,时间复杂度为O(M), M 为以上数据结构内的元素数量。

返回值:

被删除 key 的数量。

【举例说明】:

#  删除单个 key
redis> SET name huangz
OK
 
redis> DEL name
(integer) 1
 
# 删除一个不存在的 key
redis> EXISTS phone
(integer) 0
 
redis> DEL phone # 失败,没有 key 被删除
(integer) 0
 
# 同时删除多个 key
redis> SET name "redis"
OK
 
redis> SET type "key-value store"
OK
 
redis> SET website "redis.com"
OK
 
redis> DEL name type website
(integer) 3

【第二种方式】:

第一种方式弊端:这样一个坏处每次都要建立一个连接,量小的话还可以接受,量大的话,效率不行。

通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本:

redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 'Volume:*'

【注】:但这种处理方式,量大的情况下,lua函数unpack会出现问题,会报错误

'''
(error) ERR Error running script (call to f_e177a091510d969af3b388ee986dbe6658df6b57): @user_script:1: user_script:1: too many results to unpack
'''

【第二种方式优化后】:

【注释】:首先定义一个数组 keys,里面存储了模式匹配的所有的以 ‘Volume:’的key,然后for循环,每次处理5000个key,也就是说每次del 5000个key

redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "local keys = redis.call('keys', ARGV[1]) 
	for i=1,#keys,5000 
		do 
			redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) 
		end 
		return #keys" 0 'Volume:*'

【第二种方式弊端】:

KEYS操作在线上是禁止使用的!

Redis是单线程的,如果量很大的话,keys是遍历key的,会导致阻塞,这样其他的客户端就没法连接了!

【第三种方式】:

自从redis2.8以后就开始支持scan命令,模式匹配可以采取下面的形式来批删除大量的key

redis-cli -a youpassowrd -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 redis-cli -a youpassword -n 0 -p 6379 DEL

【结果】:

'''
 /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 DEL
(integer) 5000
(integer) 5000
(integer) 5000
(integer) 5000
(integer) 5000
(integer) 5000
(integer) 5000
(integer) 207
'''

以上就是redis实现批量删除的命令介绍的详细内容,更多请关注亿速云其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis实现批量删除的三种方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis批量删除Key的三种方式小结

目录一.使用命令行批量删除Redis的key二.使用图形界面工具RedisDesktopManager三.使用jedis批量删除keysRedis 中有删除单个 Key 的指令 del,但好像没有批量删除 Key 的指令,不过我们可以借助
2023-04-10

Redis批量删除Key的方式有哪些

本文小编为大家详细介绍“Redis批量删除Key的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis批量删除Key的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一.使用命令行批量删除
2023-07-06

Redis批量删除KEY的方法

Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作。redis-cli keys “*” | xargs redis-cli del //如
2022-06-04

redis删除hash的实现方式

目录Redis删除hash方式redis之hash类型解读redis中存取hasandroidh类型常用命令hash命令小结总结redis删除hash方式在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,后来发
2023-01-28

redis模糊批量删除key的方法

目录一、命令行删除二、golang代码删除一、命令行删除Redis-cli -h 172.18.255.99http://www.cppcns.com -p 6379 -n 6 -a 123456 KEYS "websocket127.0
2022-12-16

redis的批量删除方法是什么

Redis的批量删除方法可以使用DEL命令进行操作。DEL命令用于删除一个或多个指定的键(key)。它可以一次删除一个或多个键,可以同时删除不同类型的键。使用语法:DEL key [key ...]示例:DEL key1 key2 key3
2023-09-11

MongoDB删除文档的方式(删除一个、批量删除)

这篇文章主要介绍了MongoDB删除文档的方式(删除一个、批量删除),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-16

MongoDB 删除文档的方式(删除一个、批量删除)

目录MongoDB 删除文档(删除一个、批量删除)一、删除一个文档二、删除多个文档三、删除文档MongoDB 删除文档(删除一个、批量删除)MongoDB中提供了三种删除文档的方式,如下: 删除一个文档:db.collec
2023-04-14

MySQL删除数据的三种方式

MySQL删除数据有以下三种方式:1. 使用DELETE语句:使用DELETE语句可以删除表中的一条或多条数据。语法如下:DELETE FROM 表名 WHERE 条件;其中,表名是要删除数据的表名,WHERE后面是删除的条件。例如,删除s
2023-09-22

使用Redis缓存时高效的批量删除的几种方案

目录前因后果批量删除Redis数据方法利用的是linux的xargs命令xargs指令命令格式参数:使用Lua脚本删除百万/千万级的keyLua脚本是什么?Lua脚本的指令格式Lua脚本执行参数Lua获取传参数据示例Lua脚本的案例(key
2023-01-28

MySQL删除表的三种方式(小结)

drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删除 user 表:drop table user;truncate (table) truncate 是删除表数据,不删除表的结构,速度排第二,但不能与wh
2022-05-18

Java实现redis分布式锁的三种方式

本文主要介绍了Java实现redis分布式锁的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

编程热搜

目录