Redis获取某个前缀的key脚本实例

这篇文章主要给大家介绍了关于redis获取某个前缀的key脚本的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用redis具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

1.背景

在平时的维护中,经常会遇到要统计某个前缀的key有多少,在请求比较多的redis中,keys * 会直接导致阻塞。
可以采用scan的方式进行增量迭代,查询使用pipeline减少交互,提高效率。

2.scan命令的优缺点

SCAN命令的有SCAN,SSCAN,HSCAN,ZSCAN。

SCAN的话就是遍历所有的keys

其他的SCAN命令的话是SCAN选中的集合。

SCAN命令是增量的循环,每次调用只会返回一小部分的元素。所以不会有KEYS命令的坑。

SCAN命令返回的是一个游标,从0开始遍历,到0结束遍历。

scan 01) "655"2) 1) "test1"  2) "test2"

登录后复制

返回值一个array,一个是下次循环的cursorId,一个是元素数组。SCAN命令不能保证每次返回的值都是有序的,另外同一个key有可能返回多次,不做区分,需要应用程序去处理。

另外SCAN命令可以指定COUNT,默认是10。但是这个并不是指定多少,就能返回多少,这只是一个提示,并不能保证一定返回这么多条。

优点:

提供键空间的遍历操作,支持游标,复杂度O(1), 整体遍历一遍只需要O(N);

提供结果模式匹配;

支持一次返回的数据条数设置,但仅仅是个hints,有时候返回的会多;

弱状态,所有状态只需要客户端需要维护一个游标;

缺点:

无法提供完整的快照遍历,也就是中间如果有数据修改,可能有些涉及改动的数据遍历不到;

每次返回的数据条数不一定,极度依赖内部实现;

返回的数据可能有重复,应用层必须能够处理重入逻辑;

3. python脚本的实现

python中有一个封装的函数scan_iter–查看所有元素–迭代器

脚本内容:

#!/usr/bin/env python# -*- coding: UTF-8 -*- #作用:统计某个前缀key的个数,并将其输入到文件#使用方法:python scan_redis.py apus* 100__author__ = "lcl" import sysimport redis import os pool=redis.ConnectionPool(host='192.168.225.128',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) #扫描匹配值,通过sys.argv传参match = sys.argv[1]#每次匹配数量count = sys.argv[2]#print match#print count#总数量total = 0#扫描到的key输出到文件path = os.getcwd()#扫描到的key输出的文件txt = path+"/keys.txt"f = open(txt,"w")for key in r.scan_iter(match = match,count = count):# f.write("%s %s" % (key,"")) f.write(key+"") total = total+1f.closeprint "匹配: %s 的数量为:%d " % (match,total)

登录后复制

相关推荐:

php 使用 redis 的缓存实例

以上就是Redis获取某个前缀的key脚本实例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2263883.html

(0)
上一篇 2025年2月27日 07:51:11
下一篇 2025年2月25日 06:47:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python发送邮件脚本

    这篇文章主要为大家详细介绍了发送邮件python脚本,支持多个附件,中文,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python发送邮件的具体代码,供大家参考,具体内容如下 #!/usr/bin/env pyth…

    编程技术 2025年2月27日
    200
  • python能做脚本吗

    python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良的lisp。python的设计哲学强调代码的可读性和简洁的语法。相比于c++或java,python让开发者能够用…

    2025年2月27日
    200
  • 系统重装c盘哪些资料可以删掉

    重装系统时可删除的资料包括:用户资料(如桌面文件、文档、图片、音乐、视频)应用软件(包括第三方、浏览器扩展和系统自带)系统临时文件(临时文件夹、预取文件、日志文件)其他文件(SoftwareDistribution、Windows Defe…

    2025年2月27日
    200
  • Python-master,实用Python脚本合集!

    Python这门语言很适合用来写些实用的小脚本,跑个自动化、爬虫、算法什么的,非常方便。 这也是很多人学习Python的乐趣所在,可能只需要花个礼拜入门语法,就能用第三方库去解决实际问题。 我在Github上就看到过不少Python代码的项…

    2025年2月26日
    200
  • Rb(redis blaster),一个为 Redis 实现 non-replicated 分片的 Python 库

    Rb,redis blaster,是一个为 redis 实现非复制分片(non-replicated sharding)的库。它在 python redis 之上实现了一个自定义路由系统,允许您自动定位不同的服务器,而无需手动将请求路由到各…

    编程技术 2025年2月26日
    200
  • 五个方便好用的Python自动化脚本

    相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率。 编程世界里有各种各样的自动化脚本,来完成不同的任务。 尤其Python非常适合编写自动化脚本,因为它语法简洁易懂,而且有…

    2025年2月26日 编程技术
    200
  • 如何让 Python 脚本在工作日运行?

    你好,我是征哥,最近用 Python 写了个每日签到答题的脚本,想让它在工作日每天运行,于是我找到了这个三方库-chinesecalendar。 chinesecalendar 可以用来判断某年某月某一天是不是工作日/节假日。支持 2004…

    2025年2月26日
    200
  • 十个 Python 脚本来自动化你的日常任务

    在这个自动化时代,我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。 那么在本文中,我将向您介绍 10 个 Python 自动化脚本,以使你的工作更加自动化,生活更加轻松。 因此,没…

    2025年2月26日
    200
  • 超硬核!11个非常实用的 Python 和 Shell 拿来就用脚本实例!

    Python 脚本部分实例:企业微信告警、FTP 客户端、SSH 客户端、Saltstack 客户端、vCenter 客户端、获取域名 ssl 证书过期时间、发送今天的天气预报以及未来的天气趋势图; Shell 脚本部分实例:SVN 完整备…

    2025年2月26日
    200
  • 用于清理数据的五个简单有效 Python 脚本

    将 PDF 转换为 CSV 在机器学习中,我们应该少一些“数据清理”,多一些“数据准备”。当我们需要从白皮书、电子书或其他PDF文档中抓取数据时,这个脚本为我节省了很多时间。 import tabula#获取文件pdf_filename =…

    2025年2月26日
    200

发表回复

登录后才能评论