Redis 批量删除键

Redis批量删除key的命令浅谈 本文主要介绍了Redis批量删除key的命令详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令但是redis中有通过正则表达式获取key的命令:keys "正则表达式"可以借助于xargs命令实现批量删除key,把查出来的key值当做参数传给del完整命令:1。 阅读详情
AI摘要

本文介绍Redis中批量删除键的多种方法,包括使用keys+del命令、SCAN命令、UNLINK命令及Lua脚本等,并对比它们的优缺点。

Redis 批量删除键

1. 简介

在Redis中批量优雅的删除大量键是一个很麻烦的问题,下面例举常用的方法和优缺点。

2. keys+del命令

使用keys使用查找所有匹配的键,然后在使用del一起批量删除。

优点

  1. 操作简单。

缺点

  1. 查找性能特别差,需要遍历所有键。如果redis key特别多,还有可能造成redis短时间无法提供服务。
  2. 网络性能占用多,所有匹配键都需要发送到redis客户端,如果匹配键特别多会占用大量网络带宽(这个问题可以通过Lua脚本来解决)。
  3. 占用内存多,需要大量内存暂存已经找到的键。
import redis

r = redis.Redis(host='127.0.0.1', port=6379, db=0)

# 查找
keys = r.keys("example-*")
# 删除
r.delete(*keys)

3. SCAN命令

  1. 使用SCAN命令迭代匹配特定模式的键。
  2. 对于每次SCAN迭代返回的键,使用DEL命令进行删除。
  3. 重复上述步骤,直到SCAN命令返回的游标为0,表示迭代完成。

优点

  1. 非阻塞,不会影响Redis服务器的其他操作。
  2. 可以控制每次迭代的键数量,减少内存占用。

缺点

  1. 在高并发场景下,很难保证所有匹配的键都完全删除,需要多次迭代。
import redis

r = redis.Redis(host='127.0.0.1', port=6379, db=0)

cursor = 0  # 以0开始
while True:
    cursor, keys = r.scan(cursor=cursor, match='example-*', count=100)
    if cursor == 0:  # 以0结束
        break

    if keys:
        r.delete(*keys)

4. UNLINK命令

UNLINK命令是Redis提供的一个异步删除命令,与DEL命令不同,UNLINK命令会立即返回,而删除操作将在后台异步进行。

  1. 使用SCAN命令或KEYS命令获取要删除的键列表。
  2. 使用UNLINK命令代替DEL命令进行删除。

优点

  1. 异步删除,不会阻塞Redis服务器。

缺点

  1. 删除的完成时间不可预测。
  2. 在某些情况下可能需要额外的逻辑,保证在需要删除的键已经删除。
import redis

r = redis.Redis(host='127.0.0.1', port=6379, db=0)

cursor = 0  # 以0开始
while True:
    cursor, keys = r.scan(cursor=cursor, match='example-*', count=100)
    if cursor == 0:  # 以0结束
        break

    if keys:
        r.unlink(*keys)

5. Lua脚本

上面所有的示例都可以转换成Lua脚本版本,下面只演示其中一个。

优点

  1. 大量降低redis客户端与redis服务器的RTT时间。
  2. 大量节约了redis服务器的带宽。

缺点

  1. 提高操作的复杂。
import redis

r = redis.Redis(host='127.0.0.1', port=6379, db=0)

lua_script = """
local key1 = KEYS[1]
local delete_count = 0
local delete_keys = redis.call('keys', key1)
if #delete_keys > 0 then
    delete_count = redis.call('del',unpack(delete_keys))
end

return delete_count
"""

# 注册脚本
script = r.register_script(lua_script)

# 执行
result = script(keys=['example-*'])
print(result)

6. 总结

  1. 尽量避免在生产环境使用keys:使用keys不可避免的会出现性能问题。
  2. 分批次删除:不要一次删除防止redis服务端处理大量键进入阻塞状态。
Redis中批量删除键的方法 本文介绍了Redis中批量删除键的两种方法:使用DEL命令和使用UNLINK命令。而使用UNLINK命令则将键标记为待删除状态,并在适当的时机异步释放内存,从而提高删除操作的执行速度。但是,UNLINK命令在执行删除操作时并不会立即释放内存,而是将键标记为待删除状态,然后由Redis服务器在适当的时机异步释放内存。当需要删除多个键时,Redis提供了批量删除的方法,可以一次性删除多个键,从而提高操作效率。在Redis中,批量删除键的方法主要有两种:使用DEL命令和使用UNLINK命令。 阅读详情

相关推荐

Redis 由浅入深 (6) - Redis批量删除key

日常工作当中经常会遇到删除Redis key的问题,如果是删除某个key,使用 DEL keyname 或者 EXPIRE keyname ttl 都可以实现。但如果想要一次性删除多个key应该怎么处理呢?Redis本身并不支持批量删除key的操作,下面我们就来看看如何巧妙地处理这类问题。

yh4494的博客 2388

开发技术-批量删除redis数据的4种方法

版权声明:本文为优快云博主「JustDI-CM」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。先前项目组使用redis没有设置过期时间,导致redis数据越来越多,redis服务器内存撑不住了。登录到redis客户端,选中需要删除的目录,右键,弹出delete namespace。在redis服务器上,redis安装路径的bin目录下,执行命令。将del.lua上传至redis的bin目录下,然后执行命令。可以使用lua脚本,redis有内置的lua解释器。

weixin_42895341的博客 5792

使用PHP和Redis进行批量键删除的方法

在PHP中,我们可以使用Redis扩展来与Redis服务器进行交互,并且可以方便地执行批量键删除操作。本文将介绍如何使用PHP和Redis扩展来实现批量键删除,并附上相应的源代码示例。方法,我们可以方便地批量删除指定的键。接下来,我们可以编写PHP代码来连接到Redis服务器,并执行批量键删除操作。以上就是使用PHP和Redis进行批量键删除的方法。在上面的代码中,我们首先创建了一个Redis对象,并使用。你可以根据自己的需求修改该数组,添加或删除要删除的键。方法,Redis服务器将删除所有指定的键。

DpJulia的博客 369

redis批量删除key命令

1.cd到redis的src目录,要使用其中的文件redis-cli执行后续命令(也可能不需要这步) cd /home/useradmin/redis-5.0.3/src 2.redis批量删除key命令如下: redis-cli -n 1 -c -h 10.123.123.123 -p 37652 -a abc123@456 keys "exam:*" | xargs redis-cli -n 1 -c -h 10.123.123.123 -p 37652 -a abc123@456 del 说明

BHSZZY的博客 1万+

基于DE2-115红外解码实验

基于DE2-115红外解码实验   一、   功能描述 在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型, 这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。对应于编码芯片通常会有相配对的解码芯片或包含解码模块的应用芯片。在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。只有知道编码方式,我...

乘风的博客 2513

PyBioMed学习

PyProtein。

weixin_63016274的博客 1401

Redis如何批量删除指定模式键的值

今天有一个小功能点是关于批量删除redis指定的键。我以为几分钟既可以搞定的事情,没想到花了我一个钟的时间。 比如我redis存的键是: {imei}l:topic {imei}l:title {imei}l:tag {imei}l:url 它们都有共同的前缀:{imei}l 所以我一顿操作直接: delete {imei}l* 没想到redis直接给我返回个0,意思没有删除任何东西。 wha...

riemann_的博客 2487

大白映射 宝马Esys编程设码映射、USB设备映射

大白映射,宝马Esys设码编程、USB设备映射

denson0394的博客 4795

Linux下redis 集群 批量删除 键

单机形式批量删除可使用xargs指令如下操作: redis-cli -h 10.190.104.11 -p 6379 keys "user*" | xargs -i redis-cli -h 10.190.104.11 -p 6379 del {} 如需密码加上-a 参数即可,如需指定某个库加上-n参数即可,例如: redis-cli -a 密码 -h 10.190.104.11 -p 6...

qq_40595055的博客 1343

学术类PPT制作总结

本文分享了科技类PPT的制作技巧,希望相关的信息能帮助到读者。

奇妙水果的技术博客,欢迎交流技术~ 2880

基础矩阵、本质矩阵、单应矩阵

基础矩阵是一个 3×3 的秩为2的矩阵,用于描述两个不同视图(或称为图像)之间对应点的几何约束。更具体地说,如果你有两幅图像,分别从两个不同的相机或者相机位置拍摄,那么基础矩阵可以用于找到一个图像中的点在另一个图像中的对应点。本质矩阵也是一个 3×3 的秩为2的矩阵,与基础矩阵非常类似。当两个视图(图像)之间的场景是一个平面或者两个视图之间仅有旋转和平移时,可以使用单应矩阵来关联这两个视图。这三个矩阵都是在计算机视觉中广泛应用的基础工具,但它们适用于不同类型的视图和场景。给定两个图像中的一对对应点。

Gloamirror的博客 1327

redis 批量删除某些键

linux命令批量删除某些键如goods_stock_99,goods_stock_19,goods_stock_39 进入linux界面按照下面的命令行操作 (1)whereis redis-cli (2)cd /usr/bin (3)redis-cli -a 密码 -h host地址-p 端口号 keys 'goods_stock_*' | xargs redis-cli -a 密码 -h host地址-p 端口号 del 然后就删除了 ...

stand_forever的博客 573

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 465

Linux下redis 集群 批量删除 键 以及一些其他日常管理操作

命令大全:http://doc.redisfans.com/ 本文有参考http://blog.51cto.com/ganbing/2050111,特此致谢。 一、操作环境:CentOS-7,redis-4.0.8,双机主备集群, 10.190.104.11:6378/6379/6380;(主) 10.190.104.11:6378/6379/6380;(备) 欲删除以user开头的全部...

zhangwenjiang001的博客 1953

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1264

【00】虹软2023届校招专场 ,计算机类笔试攻略(笔试考试时间、考察范围、笔试难度 等说明)

虹软科技2023校招笔试攻略:三大岗位类别(算法、算法优化、开发)分别于7月24日进行。题型包括选择题、编程题和问答题,其中算法类题目降低难度,编程题改为LeetCode模式。重点考察数学基础、机器学习、编程能力(C/C++/Python)、数据结构和算法优化等。建议根据投递岗位选择问答题,算法优化类注重系统知识和SIMD优化,开发类侧重多线程等实际应用能力。笔试结果将作为校招offer的重要参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 276

redis关键字删除_redis 批量删除键

主题为啥会有这篇文章呢? 在redis里我需要批量删除一些 "特殊" 的数据...这些特殊的数据用正常方法比较难删除...所以记录一下我的删除方法..背景与问题我再用SpringBoot集成Spring的@Cacheable的时候遇到了一些比较麻烦的事情...第一个是序列化问题...相信大家一般都会遇到过..redisTemplate默认用的是JdkSerializationRedisSerial...

weixin_34663443的博客 787

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

批量删除redis键

用Linux的xargs 执行命令: ./redis-cli -p 16379 -a 87fgD0GKVk4ZUDgzAQIshxbA6cQXhr keys "audit*" | xargs ./redis-cli -p 16379 -a 87fgD0GKVk4ZUDgzAQIshxbA6cQXhr DEL 转载于:https://www.cnblogs.com/desor...

weixin_33943836的博客 106

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

redis批量删除键

~/redis-cli -h 127.0.0.1 -a passwd --raw keys "IM_GROUP_MEMBERS_*" | xargs ~/redis-cli -h 127.0.0.1 -a passwd del

lanxingmo的专栏 274

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

redis删除集群 linux,Linux下redis 集群 批量删除 键 以及一些其他日常管理操作

命令大全:http://doc.redisfans.com/本文有参考http://blog.51cto.com/ganbing/2050111,特此致谢。一、操作环境:CentOS-7,redis-4.0.8,双机主备集群,10.190.104.11:6378/6379/6380;(主)10.190.104.11:6378/6379/6380;(备)欲删除以user开头的全部键;二、单机形式批量...

weixin_35242442的博客 505

3分钟批量删除十万Redis键!AnotherRedisDesktopManager自动化脚本实战指南

你是否还在手动逐个删除Redis键值对?面对成百上千个过期缓存需要清理时,重复的点击操作不仅浪费时间,还可能因误操作导致生产事故。本文将带你掌握AnotherRedisDesktopManager的批量操作功能,通过可视化界面与脚本命令结合的方式,3分钟内完成十万级键值对的高效管理,彻底摆脱繁琐的重复劳动。 ## 批量操作核心场景与痛点分析 Redis作为高性能缓存数据库,在实际应用中常面临三...

gitblog_00177的博客 462

redis 批量删除键

主题   为啥会有这篇文章呢? 在redis里我需要批量删除一些 "特殊" 的数据...这些特殊的数据用正常方法比较难删除...所以记录一下我的删除方法.. 背景与问题 我再用SpringBoot集成Spring的@Cacheable的时候遇到了一些比较麻烦的事情... 第一个是序列化问题...相信大家一般都会遇到过.. redisTemplate默认用的是JdkSe...

ajunkui4460的博客 377
上一篇: Redis 执行Lua脚本
下一篇: Android Pixel3离线刷机
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值