返回顶部
首页 > 资讯 > 数据库 >Redis如何获取某个前缀的key脚本
  • 338
分享到

Redis如何获取某个前缀的key脚本

2024-04-02 19:04:59 338人浏览 薄情痞子
摘要

这篇文章主要介绍了Redis如何获取某个前缀的key脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.背景在平时的维护中,经常会遇到要统

这篇文章主要介绍了Redis如何获取某个前缀的key脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1.背景

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

2.scan命令的优缺点

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

SCAN的话就是遍历所有的keys

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

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

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

scan 0
1) "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 sys
import 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,"\n"))
 f.write(key+"\n")
 total = total+1
f.close
print "匹配: %s 的数量为:%d " % (match,total)

感谢你能够认真阅读完这篇文章,希望小编分享的“Redis如何获取某个前缀的key脚本”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: Redis如何获取某个前缀的key脚本

本文链接: https://lsjlt.com/news/55733.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis如何获取某个前缀的key脚本
    这篇文章主要介绍了Redis如何获取某个前缀的key脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.背景在平时的维护中,经常会遇到要统...
    99+
    2024-04-02
  • Redis怎么获取某个大key值
    这篇文章将为大家详细讲解有关Redis怎么获取某个大key值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、前言工作中,经常有些Redis实例使用不恰当,或者对业务预估...
    99+
    2024-04-02
  • 【Redis】获取没有设置ttl的key脚本
    一 前言       在运维Redis的时候,总会遇到使用不规范的业务设计,比如没有对key设置ttl,进而导致内存空间吃紧,通常的解决方法是在slave上du...
    99+
    2024-04-02
  • Java使用RedisTemplate如何根据前缀获取key列表
    目录使用RedisTemplate根据前缀获取key列表批量获取 key批量获取 valueRedisTemplate如何获取符合要求的key如图:reds中存了三条数据我写的tes...
    99+
    2024-04-02
  • Redis如何优雅的删除特定前缀key
    前言 还在用keys命令模糊匹配删除数据吗?这就是一颗随时爆炸的炸弹! Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案 ...
    99+
    2024-04-02
  • Redis如何删除1.2亿指定前缀的key
    这篇文章主要为大家展示了“Redis如何删除1.2亿指定前缀的key”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis如何删除1.2亿指定前缀的key”这...
    99+
    2024-04-02
  • java如何获取object中某key的值
    在Java中,可以通过以下方式获取object中某个key的值: 使用JSONObject类:首先将object转换为JSONOb...
    99+
    2023-10-24
    java object
  • redis如何获取所有key
    获取 redis 中所有键的方法:keys 命令:获取指定模式匹配的所有键名。scan 命令:迭代获取所有键名。dump 结合 eval 命令:导出所有键的值并获取键名。使用 redis...
    99+
    2024-04-20
    python redis
  • Go语言如何获取文件的名称、前缀、后缀
    这篇文章主要介绍Go语言如何获取文件的名称、前缀、后缀,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!go是什么golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器而无需额外的...
    99+
    2023-06-14
  • redis如何获取key过期时间
    Redis提供了`TTL`命令来获取key的剩余过期时间。可以使用以下命令来获取key的剩余过期时间:```TTL key```其中...
    99+
    2023-09-04
    redis key
  • redis通过lua脚本,获取满足key pattern的所有值方式
    我们知道,redis提供了keys命令去获取所有满足格式的key,如我们键入命令 keys "user*" 将得到所有以user开头的key 然后执行 mget命令可以获取多...
    99+
    2024-04-02
  • bash shell如何获取当前脚本的绝对路径
    本篇内容主要讲解“bash shell如何获取当前脚本的绝对路径”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“bash shell如何获取当前脚本的绝对路径”吧!有时候,我们...
    99+
    2023-06-29
  • java如何获取json中的某个值
    在Java中,可以使用JSON库来解析JSON数据并获取其中的某个值。常用的JSON库有Jackson、Gson和JSON-java...
    99+
    2023-10-10
    json java
  • python如何获取json中的某个值
    在Python中,可以使用`json`模块来解析JSON字符串。可以通过将JSON字符串转换为字典或列表的形式,然后使用索引或键名来...
    99+
    2023-09-04
    python json
  • 如何获取完整的sqltext脚本
    这篇文章给大家分享的是有关如何获取完整的sqltext脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 #!/bin/bash # by ray # 2017-08-31...
    99+
    2024-04-02
  • java如何获取list某个字段的值
    在Java中,可以通过遍历List来获取其中某个字段的值。以下是一个示例代码:```javaimport java.util.Arr...
    99+
    2023-09-25
    java
  • php如何获取mysql查询的某个值
    这篇文章主要介绍“php如何获取mysql查询的某个值”,在日常操作中,相信很多人在php如何获取mysql查询的某个值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何获取mysql查询的某个值”的疑...
    99+
    2023-07-05
  • vue如何获取某个元素节点
    在vue中获取元素节点的方法:1.新建vue.js项目;2.使用this.$refs.方法标记元素;3.执行代码获取元素节点;具体步骤如下:首先,在vue-cli中创建一个vue.js项目;vue create project-namevu...
    99+
    2024-04-02
  • bat脚本实现获取指定几个月前的月份信息
    这篇文章主要讲解了“bat脚本实现获取指定几个月前的月份信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“bat脚本实现获取指定几个月前的月份信息”吧!@echo offrem&n...
    99+
    2023-06-03
  • python如何获取文件的后缀
    使用python获取文件的后缀的方法:1.新建python项目;2.导入os模块;3.使用os.split()方法文件名;4.使用os.splitext()方法获取文件后缀;具体步骤如下:首先,打开python,并新建一个python项目;...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作