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命令是一个基于游标的迭代器, 这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程, 当SCAN命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束,HSCAN同SCAN命令相同。

一、 hash操作

1,查看一下hash有多少条记录
127.0.0.1:6379[1]> hgetall pms:1
 1) "stock"
 2) "12"
 3) "freeze"
 4) "10"
 5) "stock:1"
 6) "11"
 7) "stock:2"
 8) "23"
 9) "stock:freeze:1"
10) "111"
11) "stock:5"
12) "1212"

2,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock:* count 100
1) "0"
2) 1) "stock:1"
   2) "11"
   3) "stock:2"
   4) "23"
   5) "stock:freeze:1"
   6) "111"
   7) "stock:5"
   8) "1212"

3,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock* count 100
1) "0"
2)  1) "stock"
    2) "12"
    3) "stock:1"
    4) "11"
    5) "stock:2"
    6) "23"
    7) "stock:freeze:1"
    8) "111"
    9) "stock:5"
   10) "1212"

4,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock:freeze:* count 100
1) "0"
2) 1) "stock:freeze:1"
   2) "111"

二、键值对操作

1,查看有多少个键
127.0.0.1:6379[1]> keys *
 1) "pms:1"
 2) "pms:freeze:21"
 3) "pms:10"
 4) "pms:11"
 5) "pms:9"
 6) "pms:4"
 7) "name"
 8) "pms:5"
 9) "pms:8"
10) "pms:7"
11) "pms:2"
12) "go:123"
13) "pms:3"
14) "pms:6"

2,模糊查找pms:*的键
127.0.0.1:6379[1]> scan 0 match pms:* count 10
1) "3"
2) 1) "pms:1"
   2) "pms:8"
   3) "pms:freeze:21"
   4) "pms:5"
   5) "pms:11"
   6) "pms:9"
   7) "pms:4"
   8) "pms:3"
   9) "pms:6"

3,模糊查找pms:*的键,游标从3开始
127.0.0.1:6379[1]> scan 3 match pms:* count 10
1) "0"
2) 1) "pms:10"
   2) "pms:7"
   3) "pms:2"             

原文地址:http://blog.51cto.com/13581092/2149178

时间: 2024-10-10 03:17:06

redis操作之迭代器(scan和hscan)讲解的相关文章

Go语言入门(十) Mysql与Redis操作

Mysql与Redis操作 Mysql开发 安装mysql,创建test库 创建表 mysql> CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT '', `age` int(11) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; mys

python笔记7:mysql、redis操作

模块安装: 数据操作用到的模块pymysql,需要通过pip install pymysql进行安装. redis操作用的模块是redis,需要通过pip install redis进行安装. 检验是否安装成功:进入到Python命令行模式,输入import pymysql. import redis ,无报错代表成功: mysql操作方法如下: 查询数据:fetchone.fetchmany(n).fetchall() import pymysql #建立mysql连接,ip.端口.用户名.密

redis 操作常用命令

首先看一下redis操作常用的命令: exists key 测试制定的key是否存在 del key1 key2 .... keyn   删除制定的key type key 查看key的类型 keys pattern  返回匹配制定模式的所有的key raname oldkey newkey  修改key的名称 dbsize  查看当前数据库的key的数量 exprie key  seconds   为key指定过期时间 ttl  key  查看key的过期时间 select db-index

redis 操作大全 PHP-redis中文文档

转自  : http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/owlient/phpredis(支持redis 2.0.4) Redis::__construct构造函数$redis = new Redis(); connect,

使用python对redis操作

写在前面 首先声明,这是为了学习python对redis操作而写的一个小demo,包括了这几天网站找到的一些资料,综合总结出来一些东西,最后附上我写的一个用python操作redis的一个demo: 模块安装 python提供了一个模块redis-py来使我们很方便的操作redis数据库,安装该模块也很简单,直接使用pip安装就行,命令如下: pip install redis 安装完之后,使用import调用一下就能知道是否安装成功,在python界面下输入import redis,如果不报错

使用Spring Data Redis操作Redis(二)

上一篇讲述了Spring Date Redis操作Redis的大部分主题,本篇介绍Redis的订阅和发布功能在Spring应用中的使用. 1. Redis的Pub/Sub命令 Redis的订阅和发布服务有如下图6个命令,下面分别对每个命令做简单说明. publish: 向指定的channel(频道)发送message(消息) subscribe:订阅指定channel,可以一次订阅多个 psubscribe:订阅指定pattern(模式,具有频道名的模式匹配)的频道 unsubscribe:取消

使用Leopard Redis操作Redis

使用Leopard Redis操作Redis 学习如何在旧项目中使用Leopard Redis. 本指南将引导您完成使用Leopard Redis操作Redis. How to complete this guide 你可以从头开始并完成每一个步骤,或者您可以绕过你已经熟悉的基本设置步骤.无论哪种方式,你最终都可以得到可工作的代码. 1.配置maven依赖 在dao模块的pom.xml加入 <dependencies> [...] <dependency> <groupId&

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个数的控制并节约系统资源.假设希望在系统中某个类的对象仅仅能存在一个.单例模式是最好的解决方式. 2 模式核心思想 1)某个类仅仅能有一个实例: 2)它必须自行创建这个实例: 3)它必须自行向整个系统提供这个实例. 3 模式架构图 4 项目应用 4.1 需求说明 CleverCode在实际的PHP项目

PHP连接Redis操作函数

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/owlient/phpredis(支持redis 2.0.4) Redis::__construct构造函数$redis = new Redis(); connect, open 链接redis服务参数host: string,服务地址port: int,端口号timeout: float,链接时长 (