,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
复述,实现批量删除:
1,访问复述,根目录,,cd/usr/地方/redis-2.8.19
2,登录复述:redis-cli - h 127.0.0.1 - p 6379(其中,127.0.0.1可以写成服务器的IP地址,6379为端口号)
3,查看所有关键值:钥匙*
4,删除指定索引的值:del键
5,清空整个复述,服务器的数据:flushall
6,清空当前库中的所有关键:flushdb
【第一种方式:
下面是批量删除以“key_”开头的所有复述,数据数量为100个
redis-cli - h (IP地址)- p 6379(端口号:6379)键key_ * | xargs redis-cli (- h (IP地址)- p 6379(端口号:6379))德尔=在[执行后返回的结果影响数量):(整数)100(数量100个]
【上述命令中DEL函数的具体用法】:
DEL键[键……)
删除给定的一个或多个关键。
不存在的钥匙会被忽略。
时间复杂度:
O (N), N为被删除的关键的数量。
删除单个字符串类型的关键,时间复杂度为O (1)。
删除单个列表,集合,有序集合或哈希表类型的关键,时间复杂度为O (M), M为以上数据结构内的元素数量。
返回值:
被删除关键的数量。
【举例说明】:
#删除单个关键 redis>集名称huangz 好吧 redis>德尔的名字 (整数)1 #删除一个不存在的关键 redis>存在手机 (整数)0 redis>德尔电话#失败,没有键被删除 (整数)0 #同时删除多个关键 redis>集名称“redis" 好吧 redis>设置类型“键-值store" 好吧 redis>设置网站“redis.com" 好吧 redis>德尔名称类型网站 (整数)3
【第二种方式:
第一种方式弊端:这样一个坏处每次都要建立一个连接,量小的话还可以接受,量大的话,效率不行。
通过内置的Lua解释器,可以使用EVAL命令对Lua脚本:
redis-cli - h (IP地址)- p 6379(端口号:6379)- EVAL“返回redis.call(& # 39;德尔# 39;,解压缩(redis.call(& # 39;键# 39;,ARGV [1]))),0 & # 39;体积:* & # 39;
【注】:但这种处理方式,量大的情况下,lua函数解压缩会出现问题,会报错误
& # 39;& # 39;& # 39; (错误)错错误运行脚本(调用f_e177a091510d969af3b388ee986dbe6658df6b57): @user_script: 1:将user_script: 1:太多的结果 & # 39;& # 39;& # 39;
【第二种方式优化后】:
【注释】:首先定义一个数组密钥,里面存储了模式匹配的所有的以“卷:”的关键,然后对循环,每次处理5000个键,也就是说每次德尔5000个关键
redis-cli - h (IP地址)- p 6379(端口号:6379)- EVAL“本地键=redis.call(& # 39;键# 39;,ARGV [1]) 因为我=1,#键,5000 做 redis.call(& # 39;德尔# 39;,解压缩(钥匙、我、数学。分钟(我+ 4999,#键))) 结束 返回# keys"0 & # 39;体积:* & # 39;
【第二种方式弊端】:
键操作在线上是禁止使用的!
复述是单线程的,如果量很大的话,钥匙是遍历键的,会导致阻塞,这样其他的客户端就没法连接了!
【第三种方式:
自从redis2.8以后就开始支持扫描命令,模式匹配可以采取下面的形式来批删除大量的关键
redis-cli——youpassowrd 0 - n - p 6379——扫描模式“卷:*“;| xargs - l 5000 redis-cli——youpassword 0 - n - p 6379 DEL
【结果】:
& # 39;& # 39;& # 39;/工作/app/复述/bin/redis-cli——youpassword 0 - n - p 6379——扫描模式“卷:*“;5000 | xargs - l/工作/app/复述/bin/redis-cli——youpassword 0 - n - p 6379德尔 (整数)5000 (整数)5000 (整数)5000 (整数)5000 (整数)5000 (整数)5000 (整数)5000 (整数)207 & # 39;& # 39;& # 39;
以上就是复述,实现批量删除的命令介绍的详细内容,更多请关注其它相关文章!