redis之scan

redis之scan

1.概念

scan是redis2.8以后引入的,它可以说是keys的一个升级版,我们知道keys命令可以用来查询key,可以使用通配符,但是没有分页功能,而且redis是单线程,所以key的查询比较消耗时间,特别是数据量大的时候,scan具备keys的功能,而且还可以分页,不会阻塞线程,还可以控制每次返回的结果数

2.基本用法

  1. 事先准备1万条数据
package com.yl;

import redis.clients.jedis.Jedis;

public class ScanTest {
    public static void main(String[] args) {
        Jedis jedis = JedisUtils.getJedisObject();
        for (int i = 0; i < 10000; i++) {
            jedis.set("k"+i,"v"+i);
        }
    }
}

  1. scan命令提供了三个参数,第一个cursor(一维数组的索引),第二个参数key(匹配模式),第三个limit(遍历一维数组的个数),这里要注意一点了,limit参数并不是代表着就返回limit条数据,redis其底层存储key的原理和jdk1.8中的hashmap原理很类似,类似加多了一个红黑树,用数组和链表来存储数据,所以limit这个值统计出来的数据个数和预想的不一致也是可以理解的!

游标的作用: 作为开始遍历一维数组的位置,如果游标为0则代表着遍历key完毕!!!

scan 0 match k3* count 1000

在这里插入图片描述

3.scan是一系列的指令,除了遍历所有的key外,也可以遍历某一个类型的key
zsacn -> zset
sscan -> set
hscan -> hash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值