redis 迭代命令SCAN、SSCAN、HSCAN、ZSCAN

SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

SCAN、SSCAN、HSCAN、ZSCAN每次执行都只会返回少量元素,所以这些命令可以用于生产环境,而不会出现像KEYS、SMEMBERS命令带来的问题,当KEYS命令被用于处理一个大的数据库时,又或者SMEMBERS命令被用于处理一个大的集合键时,它们可能会阻塞服务器达数秒之久。



SCAN cursor [MATCH pattern] [COUNT count]
SSCAN、HSCAN、ZSCAN的第一个参数总是一个数据库键;而SCAN命令则不需要在第一个参数提供任何数据库键,因为它迭代的是当前数据库中的所有数据库键。
可以通过增量式迭代命令提供的 COUNT 选项来指定每次迭代返回元素的最大值;COUNT参数的默认值为10。

scan 0

sadd myset 1 2 3 foo foobar feelsgood
sscan myset 0 match f*



SCAN命令是一个基于游标的迭代器,每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为SCAN 命令的游标参数,以此来延续之前的迭代过程。

当SCAN命令的游标参数设置为0时,服务器将开始一次新的迭代,而当服务器向用户返回值为0的游标时,表示迭代已结束。
如果一个元素是在迭代过程中被添加到数据集的,又或者是在迭代过程中从数据集中被删除的,那么这个元素可能会被返回,也可能不会。

在同一时间,可以有任意多个客户端对同一数据集进行迭代,客户端每次执行迭代都需要传入一个游标,并在迭代执行之后获得一个新的游标,而这个游标就包含了迭代的所有状态,因此,服务器无须为迭代记录任何状态。
因为迭代的所有状态都保存在游标里面,而服务器无须为迭代保存任何状态,所以客户端可以在中途停止一个迭代,而无须对服务器进行任何通知。即使有任意数量的迭代在中途停止,也不会产生任何问题。

原文地址:https://www.cnblogs.com/BaiLaowu/p/9499625.html

时间: 2024-10-27 17:02:17

redis 迭代命令SCAN、SSCAN、HSCAN、ZSCAN的相关文章

Redis学习笔记之五:redis keys命令 (24个)

Redis 版本:3.2.100 Redis 命令 Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端. 一.客户端连接服务器 基本语法: redis-cli [-h host -p port -a password] 不带参数,则默认连接本地,带上三个参数,则连接远程服务器. 举例: 如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上. redis-cli -h 127.0.0.

redis中关于scan命令的使用

概念 KEYS 查找所有符合给定模式pattern的key // 需很谨慎使用,耗时长影响正常业务,线上禁用KEYS命令 SCAN 用于增量地迭代获取key 语法 SCAN cursor [MATCH pattern] [COUNT count] SSCAN.HSCAN.ZSCAN命令与之类似 示例 scan 0 scan 0 match item* scan 0 match item* count 200 scan 128 match item* count 200 注意事项 scan的参数没

redis操作之迭代器(scan和hscan)讲解

当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令,但是如果redis数据非常大,并且key也非常多的情况下,查询的时候很可能会很慢,造成整个redis阻塞,那么有什么办法解决呢?当然有了,今天就简单的介绍一下,如:scan和hscan 格式如下: SCAN cursor [MATCH pattern] [COUNT count] HSCAN key cursor [MATCH pattern] [COUNT count] SCAN命令是一个基于游标的迭代器, 这

Redis常用命令详细介绍

一.字符串 字符串键是Redis最基本的键值对类型,将一个单独的键和一个单独的值关联起来.通过字符串键,不仅可以存储和读取字符串,如果输入能被解释为整数和浮点数,还能执行自增或自减操作. 1.SET:设置字符串键的值 命令 SET key value [EX seconds|PX milliseconds] [NX|XX] 效果 为字符串键设置值,如果字符串键不存在,创建这个字符串键:如果已经存在,直接更新值.EX和PX选项设置键的生存时间(以秒或毫秒为单位).当生存时间消耗殆尽后,这个键就会被

数据库 【redis】 命令大全

以下纯属搬砖,我用Python抓取的redis命令列表页内容 如果想看命令的具体使用可查去官网查看,以下整理为个人查找方便而已 地理位置GEOADD 将指定的地理空间位置(纬度.经度.名称)添加到指定的key中GEODIST 返回两个给定位置之间的距离GEOHASH 返回一个或多个位置元素的 Geohash 表示GEOPOS 从key里返回所有给定位置元素的位置(经度和纬度)GEORADIUS 以给定的经纬度为中心, 找出某一半径内的元素GEORADIUSBYMEMBER 找出位于指定范围内的元

No-sql之redis常用命令

转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-value高性能存储系统,类似memcached,但是redis支持丰富的数据结构类型,并且其还支持数据持久化到磁盘. Redis is a data structure server. It is open-source, networked, in-memory, and stores keys wi

2. Redis 常用命令

注意:Redis中命令不区分大小写 Set命令 set bar 1 #设置一个key 为bar的键 get命令 get bar #获取bar键的键值 keys keys * #获取所有的键 exists exists [key] #判定是否存在key,如果存在返回1,后在返回0 del del key [key-] #可以删除一个或多个键,返回值是删除的键的个数 type 获取键值的类型 返回的类型可以是:string:hash:list:set:zset incr 1) 当时整数类型时,会自增

[Redis] redis-cli 命令总结

Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法.下面将Redis提供的命令做一总结. 官网命令列表:http://redis.io/commands (英文) 1.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 2.对value操作的命令 exists(key):确认一个key是否存在 del(key):删除一个k

Redis server命令

欢迎大家加入 459479177QQ群进行交流 本章介绍Redis sever 1.sync,类似MySQL的replication 127.0.0.1:6379> sync Entering slave output mode...  (press Ctrl-C to quit) SYNC with master, discarding 601 bytes of bulk transfer... SYNC done. Logging commands from master. "PING