Redis 通配符批量删除key

问题:

  线上有部分的redis key需要清理。

 

一、

 由于Keys模糊匹配,请大家在实际运用的时候忽略掉。因为Keys会引发Redis锁,并且增加Redis的CPU占用,情况是很恶劣的,

  官网说明如下:

Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. 
This command is intended for debugging and special operations, such as changing your keyspace layout. 
Don’t use KEYS in your regular application code. 
If you’re looking for a way to find keys in a subset of your keyspace, consider using SCAN or sets.

 

 

二、方案一

如果有这种需求的话可以自己对键值做索引,

比如把各种键值存到不同的set里面,分类建立索引,这样就可以很快的得到数据,

但是这样也存在一个明显的缺点,就是浪费宝贵的空间,要知道这可是内存空间啊,所以还是要合理考虑,当然也可以想办法,比如对于有规律的键值,可以存储他们的始末值等等。 

 

三、方案二

从redis的官方文档上看,2.8版本之后SCAN命令已经可用,允许使用游标从keyspace中检索键。

对比KEYS命令,虽然SCAN无法一次性返回所有匹配结果,但是却规避了阻塞系统这个高风险,从而也让一些操作可以放在主节点上执行。

 

需要注意的是,SCAN 命令是一个基于游标的迭代器。

SCAN 命令每次被调用之后, 都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。同时,使用SCAN,用户还可以使用keyname模式和count选项对命令进行调整。SCAN相关命令还包括SSCAN 命令、HSCAN 命令和 ZSCAN 命令,分别用于集合、哈希键及有续集等。

 

四、代码示例

 

# -*- coding: utf-8 -*-
import sys
from sys import argv
from rediscluster import RedisCluster# 生产环境
product_redis_nodes_str = "*"def get_redis():redis_nodes_str = product_redis_nodes_strprint redis_nodes_strstartup_nodes = []for hp in redis_nodes_str.split(','):host, port = hp.split(':')port = int(port)startup_nodes.append({"host": host, "port": port})rc = RedisCluster(startup_nodes=startup_nodes, max_connections=16, decode_responses=False)print "get_redis success"return rcdef test_keys():rc = get_redis()key_list = []for key in rc.scan_iter(match='rc.rs.smallvideo*', count=1000):key_list.append(key)if(len(key_list)>=100000):break;for key in key_list:rc.delete(key)if __name__ == "__main__":Usage = "python %s" % __file__if len(argv) != 1:print Usagesys.exit(1)test_keys()

  

 

 

参考:

  1、http://www.redis.cn/commands/scan.html

转载于:https://www.cnblogs.com/KyleXu/p/10447862.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 .Net 7 中将 Query 绑定到数组

在 .Net 7 中,我们可以通过绑定数组的方式来接收来自查询字符串的参数。这样就不需要再使用逗号分隔的字符串来获取参数了。代码演示 假设我们需要从 query 上接受多个 id 并返回查询的结果。例如:id1&id2在 .Net 7 中,我们可以这样实现&…

xbox one 越狱_如何在Xbox One上播放视频和音乐文件

xbox one 越狱The Xbox One has integrated TV features and support for streaming media apps like Netflix and Hulu, but that isn’t where it ends. You can play video and music files you’ve ripped or downloaded by plugging in a USB drive or streaming them ove…

C++实验七

11——3 #include<fstream>using namespace std;int main(){ ofstream file; file.open("test1.txt",ios_base::binary); file<<"已成功添加字符&#xff01;"; file.close(); return 0; } 11-4 #include<fstream>#include<iostrea…

Visual Studio 15.4发布,新增多平台支持

微软发布了Visual Studio 2017的第四个升级版本&#xff0c;并且延续了支持.NET Standard 2.0和通用Windows平台&#xff08;UWP&#xff09;的承诺。.NET Standard 2.0支持是微软推动跨平台应用程序开发和代码重用战略的重要一环。\\15.4版本的变化与微软发布的预览版非常接近…

重新学习web后端开发-001-写在前面的话

"长风破浪会有时 直挂云帆济沧海" —— 李白<!-- more --> 1. 为什么会写这个系列 随着互联网技术飞速的非常&#xff0c;web开发一直都是互联网技术的重要部分之一。在作者十余年的工作中&#xff0c;经历了从程序员到高级工程师&#xff0c;然后开始负责项目…

WPF-20 ICommand命令绑定

这节我们介绍一下WPF中比较重要的接口ICommand&#xff0c;也是WPF中一个新的特性&#xff0c;做过WinForm朋友都知道&#xff0c;WinForm开发是基于事件驱动开发模式&#xff0c;比如一个Button有Click事件&#xff0c;当我点击该按钮时&#xff0c;在当前页面会执行具体的业务…

如何在Safari中查看网页的完整URL

Modern versions of Safari don’t show the entire URL of a page in the address bar—it just shows the web site’s domain name. If this bothers you, it’s easy to change. Safari的现代版本无法在地址栏中显示页面的整个URL&#xff0c;而仅显示网站的域名。 如果这困…

PHP | Uploading and reading of files and database 【PHP | 文件的上传和读取与数据库】

这是我自己的一个作业&#xff0c;用的是很基础的代码。 有错误的地方欢迎批评和指正&#xff01; 这里最容易出错的地方在读取数据后向数据库表中插入数据是的数据格式&#xff01; 文件上传的页面 uploading.php <html> <body align "center"> <fo…

Mqttnet内存与性能改进录

1 MQTTnet介绍MQTTnet是一个高性能的 .NET MQTT库&#xff0c;它提供MQTT客户端和MQTT服务器的功能&#xff0c;支持到最新MQTT5协议版本&#xff0c;支持.Net Framework4.5.2版本或以上。MQTTnet is a high performance .NET library for MQTT based communication. It provid…

DataArtisans战略联手阿里云 Apache Flink服务能力云化

近日&#xff0c;Apache Flink商业公司 CEO、联合创始人Kostas Tzoumas在云栖大会上宣布和阿里集团达成战略合作伙伴关系&#xff0c;希望能够借助全球最大的云计算公司之一阿里云&#xff0c;服务更多的大数据实时流计算的客户。同时期待通过加强和阿里集团技术合作&#xff0…

高清、免版权美图资源大全

正所谓“一图胜千言”&#xff0c;当在写文章、做设计、搞 PPT、发朋友圈&#xff0c;搭配一些合适的图&#xff0c;这无疑将极大提升内容的表现力。鉴于此&#xff0c;在倾城之链的美图板块&#xff0c;收录了来自世界各地的优质图片网站&#xff0c;它们所提供高品质且免费的…

如何在WhatsApp中将群聊静音

Group Chats are awesome if you’re in a club, want to keep in touch with all your friends, or are trying organize something. Unfortunately, if you’re busy and the other members decide to have a long, detailed conversation about the latest episode of Game …

Django进阶之session

Django进阶之session 基于cookie做用户验证时&#xff1a;敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 session服务端中存在的数据为&#xff1a; session {随机字符串1&#xff1a;{用户…

Facebook开源 PyTorch版 fairseq,准确性最高、速度比循环神经网络快9倍

今年5月&#xff0c;Facebook AI研究院&#xff08;FAIR&#xff09;发表了他们的研究成果fairseq&#xff0c;在fairseq中&#xff0c;他们使用了一种新型的卷积神经网络来做语言翻译&#xff0c;比循环神经网络的速度快了9倍&#xff0c;而且准确性也是现有模型中最高的。此外…

推荐一个开源的现代化的 PDF 生成组件

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具和组件&#xff0c;希望对您有用&#xff01;前言QuestPDF 是一个开源免费的 .NET 组件库&#xff0c;可以用来生成 PDF 文档。在 Github 上有4千多的 Star。项目充分考虑了 PDF 文…

小程序调用阿里云身份证识别OCR(附带七牛云上传图片)

写在前面&#xff1a;实现的逻辑是拍照上传调用后端封装好的身份证接口&#xff0c;然后同时调用七牛云接口把照片传过去以便后台管理系统审核看1:首选需要这么一张页面接下来就写我是怎么做的首先是布局&#xff08;以下是wxml&#xff09; <view><view classidcard&…

windows 安装yaml支持和pytest支持等

打开cmd 输入pip install pyyaml #yaml文件支持 输入pip install pytest #pytest框架支持 输入pip install requests #requests接口测试支持 输入pip install pyopenssl #openssl支持 前提是电脑上的python已经配置好了转载于:https://www.cnblogs.com/mghhzAnne/p/92…

史上最好记的神经网络结构速记表(上)

本文讲的是史上最好记的神经网络结构速记表&#xff08;上&#xff09;&#xff0c;新的神经网络结构不断涌现&#xff0c;我们很难一一掌握。哪怕一开始只是记住所有的简称&#xff08; DCIGN&#xff0c;BiLSTM&#xff0c;DCGAN &#xff09;&#xff0c;也会让同学们吃不消…

厚积薄发,微软OFFICE云时代宏脚本来临,Excel Srcipt已经推进到桌面端可用

前一阵子&#xff0c;已经发现微软在Excel上发布了Office Script For Excel&#xff0c;当时只能在网页端的Excel上使用&#xff0c;今天打开桌面端的Excel&#xff0c;发现多了一个【自动执行】选项卡。再一次看了下&#xff0c;比起以前的Office Addin&#xff0c;要先进得多…

如何使用Amazon Echo控制您的Eero Wi-Fi网络

Thanks to the power of Alexa and its open API, you’re able to control a vast number of devices using just your voice. If you have an Eero Wi-Fi system, you can even control your home network with the Amazon Echo. 得益于Alexa的强大功能及其开放的API&#xf…