redis集群scan_Redis中Scan命令的基本使用教程

本文介绍了在Redis中,如何在大量数据下进行键的查找,对比了keys和scan命令的区别。keys命令虽然简单但可能导致阻塞,而scan命令以非阻塞方式提供更优解决方案。文中通过创建100000条测试数据,演示了scan命令的用法,如scan 0 match key1111* count 20,并解释了COUNT参数实际代表服务器单次遍历的字典槽位数量,而非返回结果数量。此外,还提到了针对不同数据结构如zset、hash和set的扫描命令zscan、hscan和sscan。
摘要由CSDN通过智能技术生成

前言

Redis中有一个经典的问题,在巨大的数据量的情况下,做类似于查找符合某种规则的Key的信息,这里就有两种方式,

一是keys命令,简单粗暴,由于Redis单线程这一特性,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产生的阻塞时间越长。

二是scan命令,以非阻塞的方式实现key值的查找,绝大多数情况下是可以替代keys命令的,可选性更强

以下写入100000条key***:value***格式的测试数据(ps:用pipline的话,1w一笔,每一笔在秒级完成)

# -*- coding: utf-8 -*-

# !/usr/bin/env python3

import redis

import sys

import datetime

def create_testdata():

r = redis.StrictRedis(host='***.***.***.***', port=****, db=0, password='root')

counter = 0

with r.pipeline(transaction=False) as p:

for i in range(0, 100000):

p.set('key' + str(i), "value" + str(i))

counter = counter + 1

if (c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值