首页 > 数据库 >19. redis之scan

19. redis之scan

时间:2022-10-20 23:00:52浏览次数:74  
标签:迭代 scan 19 redis 游标 keys key

在巨大的数据量的情况下,做类似查找符合某种规则的key的信息

主要有两种方法:

第一种方法使用keys  命令,然后后面带上正则匹配,比如匹配 keys  redis*  -->匹配以redis开头的所有键,但是keys命令是以阻塞的方式执行的,keys是以遍历的方法实现的复杂度O(n),redis中的key越多,查找实现的代价就会越大,产生的阻塞时间就会越长。

第二种方法就是使用scan命令,它主要是基于游标迭代式批量进行遍历,因此不会阻塞主线程。

基本用法:

SCAN cursor [MATCH pattern] [COUNT count]
cursor - 游标。
pattern - 匹配的模式。
count - 指定从数据集里返回多少元素,默认值为 10 。
可用版本
>= 2.8.0

使用方法:

redis 127.0.0.1:6379> scan 0   # 使用 0 作为游标,开始新的迭代
1) "17"                        # 第一次迭代时返回的游标
2)  1) "key:12"
    2) "key:8"
    3) "key:4"
    4) "key:14"
    5) "key:16"
    6) "key:17"
    7) "key:15"
    8) "key:10"
    9) "key:3"
   10) "key:7"
   11) "key:1"
redis 127.0.0.1:6379> scan 17  # 使用的是第一次迭代时返回的游标 17 开始新的迭代
1) "0"
2) 1) "key:5"
   2) "key:18"
   3) "key:0"
   4) "key:2"
   5) "key:19"
   6) "key:13"
   7) "key:6"
   8) "key:9"
   9) "key:11"
 

对比keys 和scan的优缺点

keys:优点是一次性就能匹配出所有的键值,缺点是如果redis中有上亿个键,那么该命令会严重阻塞redis的主线程,导致redis服务暂时卡顿,业务不能正常使用

scan:有点是不能一次性匹配出所有的键值且匹配出的键值可能会有重复的,但是由于它是基于游标迭代式批量去取键值,所以它不会阻塞redis的主线程。

参考:https://blog.csdn.net/lxw1844912514/article/details/118526528

标签:迭代,scan,19,redis,游标,keys,key
From: https://www.cnblogs.com/zmc60/p/16811675.html

相关文章

  • redis7.0主从+sentinel
    #redis7需要python3环境wgethttps://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xztar-xv Python-3.7.2.tar.xzcdPython-3.7.2./configure--prefix=/usr/l......
  • Python学习路程——Day19
    Python学习路程——Day19os模块1、os.mkdir() 创建目录(文件夹)'''语法结构: importos os.mkdir() os.makedirs()r的作用是让\起作用'''importosos.mkdir(r......
  • coin3d + vs2019 + win窗口程序安装
    背景:最近在做数字孪生仿真,需要用OpenInventor来实现。openinventor可以看做是openGL的包装,它是面向对象的,更适合快速开发。coin3d是openinventor的实现之一,sowin则......
  • .NET Core C#系列之XiaoFeng.Redis组件库础操作篇教程
    XiaoFeng.Redis组件库拥有丰富的API和巅峰之作的性能,下面我就先以基础的操作做如下讲解,循序渐进,慢慢提升。欢迎关注xiaofeng组件库,开源不易,多多支持。开源地址:https://git......
  • 2019-2020:时间戳
    转载:https://www.cnblogs.com/imyalost/p/12058968.html 博客基本全是性能测试相关的内容了。一方面是由于专职做性能测试工作,另一方面,是终于找到自己职业发展的正确的......
  • 【收藏看】关于面试常见问题:Redis有哪些数据结构?
    面试场景  Redis作为时下最火的缓存中间件之一,面试的时候面试官肯定会问Redis的相关内容,而往往问的第一个问题就是:你知道Redis有哪几种数据结构吗?你们项目中使用......
  • Day19 Os.sys.json模块
    目录os模块(重要)1.创建目录(文件夹)2.删除目录(文件夹)3.列举指定路径下内容名称4.删除/重命名文件5.获取/切换当前工作目录6.动态获取项目根路径(重要)7.判断路径是否存......
  • Redisson 大bug处理: Command xxx succesfully sent, but channel xxx has been close
    棘手的bug,无从下手使用redisson的过程中, 我们的应用程序突然报错: org.redisson.client.RedisConnectionClosedException:Command(EXISTS),params:[paypal_fee_i......
  • luogu P1972 SDOI2009 HH的项链
    P1972SDOI2009HH的项链-洛谷|计算机科学教育新生态(luogu.com.cn)维护一个长度同为\(n\)的数组\(b\)。一个指针\(R\)从\(1\)扫到\(n\)并做如下操作:检查......
  • 基于Redis实现点赞、点赞用户按时间排序、好友关注和共同关注等业务
    点赞功能业务说明1、每个用户只能点一次赞,再次点击时取消点赞2、在Blog属性中增加isLike字段,用于判断当前用户是否点赞3、isLike的值从Redis中获取,可以用redis自带的......