广告
返回顶部
首页 > 资讯 > 数据库 >redis的scan语法及作用对象
  • 628
分享到

redis的scan语法及作用对象

2024-04-02 19:04:59 628人浏览 安东尼
摘要

这篇文章主要讲解了“Redis的scan语法及作用对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis的scan语法及作用对象”吧!

这篇文章主要讲解了“Redis的scan语法及作用对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis的scan语法及作用对象”吧!

在redis的db存在大量key或者db里头的某个set、zset、hash里头的元素非常多的话,用普通的get all操作很可能导致redis因为这个操作阻塞了,导致不能响应其他操作,特别是在高并发、海量数据的背景下,这个问题显得尤其严重。那么能不能像数据库那样有个分页的功能呢,答案就是scan操作。本文主要展示怎么在redis-cli以及springDataRedis中的使用。【推荐:redis视频教程

scan语法

scan之后返回两部分,第一部分是下次scan的参数,第二部分就是scan出来的项

作用对象(db、set、zset、hash)

  • db(key)

127.0.0.1:6379> scan 0
1) "120"
2)  1) "articleMap:63"
    2) "articleMap:37"
    3) "counter:__rand_int__"
    4) "articleMap:60"
    5) "tagSet:tag5"
    6) "articleMap:80"
    7) "messageCache~keys"
    8) "mymap"
    9) "articleMap:46"
   10) "articleMap:55"
127.0.0.1:6379> scan 120
1) "28"
2)  1) "articleMap:17"
    2) "tagSet:tag1"
    3) "articleMap:18"
    4) "articleMap:81"
    5) "\xac\xed\x00\x05t\x00\btest-cas"
    6) "articleMap:51"
    7) "articleMap:94"
    8) "articleMap:26"
    9) "articleMap:71"
   10) "user-abcde"
  • set(value)

127.0.0.1:6379> sscan myset 0
1) "3"
2)  1) "m"
    2) "j"
    3) "c"
    4) "h"
    5) "f"
    6) "i"
    7) "a"
    8) "g"
    9) "n"
   10) "e"
   11) "b"
127.0.0.1:6379> sscan myset 3
1) "0"
2) 1) "l"
   2) "k"
   3) "d"
  • zset(value & score)

127.0.0.1:6379> zscan sortset 0
1) "0"
2) 1) "tom"
   2) "89"
   3) "jim"
   4) "90"
   5) "david"
   6) "100"
  • hash(key & value)

127.0.0.1:6379> hscan mymap 0
1) "0"
2)  1) "name"
    2) "codecraft"
    3) "email"
    4) "pt@g.cn"
    5) "age"
    6) "20"
    7) "desc"
    8) "hello"
    9) "sex"
   10) "male"

SCAN的额外参数

  • count(指定每次取多少条)

127.0.0.1:6379> scan 0 count 5
1) "240"
2) 1) "articleMap:63"
   2) "articleMap:37"
   3) "counter:__rand_int__"
   4) "articleMap:60"
   5) "tagSet:tag5"
  • match(匹配key)

127.0.0.1:6379> scan 0 match article*
1) "120"
2) 1) "articleMap:63"
   2) "articleMap:37"
   3) "articleMap:60"
   4) "articleMap:80"
   5) "articleMap:46"
   6) "articleMap:55"

RedisTemplate操作

遍历数据库key

@Test
    public void scanDbKeys(){
        template.execute(new RedisCallback<Iterable<byte[]>>() {
            @Override
            public Iterable<byte[]> doInRedis(RedisConnection connection) throws DataAccessException {

                List<byte[]> binaryKeys = new ArrayList<byte[]>();

                Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().count(5).build());
                while (cursor.hasNext()) {
                    byte[] key = cursor.next();
                    binaryKeys.add(key);
                    System.out.println(new String(key, StandardCharsets.UTF_8));
                }

                try {
                    cursor.close();
                } catch (IOException e) {
                    // do something meaningful
                }

                return binaryKeys;
            }
        });
    }

遍历set


    @Test
    public void scanSet(){
        Cursor<String> cursor = template.opsForSet().scan("myset",ScanOptions.NONE);
        while (cursor.hasNext()){
            System.out.println(cursor.next());
        }
    }

遍历zset


    @Test
    public void scanZSet(){
        Cursor<ZSetOperations.TypedTuple<String>> cursor = template.opsForZSet().scan("sortset",ScanOptions.NONE);
        while (cursor.hasNext()){
            ZSetOperations.TypedTuple<String> item = cursor.next();
            System.out.println(item.getValue() + ":" + item.getScore());
        }
    }

遍历hash


    @Test
    public void scanHash(){
        Cursor<Map.Entry<Object, Object>> curosr = template.opsForHash().scan("mymap", ScanOptions.NONE);
        while(curosr.hasNext()){
            Map.Entry<Object, Object> entry = curosr.next();
            System.out.println(entry.geTKEy()+":"+entry.getValue());
        }
    }

感谢各位的阅读,以上就是“redis的scan语法及作用对象”的内容了,经过本文的学习后,相信大家对redis的scan语法及作用对象这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: redis的scan语法及作用对象

本文链接: https://www.lsjlt.com/news/60225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis的scan语法及作用对象
    这篇文章主要讲解了“redis的scan语法及作用对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis的scan语法及作用对象”吧! ...
    99+
    2022-10-18
  • JavaScript中Function对象语法的实例用法
    本篇内容主要讲解“JavaScript中Function对象语法的实例用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中Function对...
    99+
    2022-10-19
  • JS中的Map对象用法及说明
    目录JS中的Map对象JS中Map和普通对象Map对象Object对象Objects 和 maps 的比较总结JS中的Map对象 1.js创建map对象 var map = new ...
    99+
    2023-02-23
    JS中的Map对象 Map对象用法 Map对象说明
  • 同步对象在Java自然语言处理中的作用及其优缺点。
    同步对象在Java自然语言处理中的作用及其优缺点 自然语言处理(NLP)是人工智能领域的一个重要分支。它涉及到计算机如何处理和理解人类语言的问题。在Java中,同步对象是一个非常重要的概念,在NLP中也有着重要的作用。本文将介绍 什么是同步...
    99+
    2023-08-14
    同步 自然语言处理 对象
  • JSP语法、指令、表达式以及对象的知识点整理
    这篇文章主要讲解了“JSP语法、指令、表达式以及对象的知识点整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JSP语法、指令、表达式以及对象的知识点整理”吧!JSP 语法。。。脚本程序脚本...
    99+
    2023-06-02
  • SpringBoot整合Redis实现序列化存储Java对象的操作方法
    目录一、背景1、思考2、方案二、源码分析三、注入RedisTemplate1、引入依赖2、Redis 连接信息3、Redis 核心配置类4、Redis工具类四、测试1、创建 Java 实体类 UserInfo2、测试用例...
    99+
    2023-03-23
    SpringBoot整合Redis序列化存储Java对象 SpringBoot整合Redis SpringBoot Redis序列化存储
  • C++语言中函数对象的作用是什么
    C++语言中函数对象的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在C++语言的世界中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类和基类向子类...
    99+
    2023-06-17
  • java中的session对象及其常用方法小结
    session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。 在jsp页面中可以...
    99+
    2022-11-12
  • JavaScript中String对象的使用方法以及实例
    方法总览: 实例(js中字符串和字符串对象之间能够自由转换,字符串可以直接使用字符串对象的方法和属性):  var ss="孙士彬倪炜豪汤键倪炜豪"; documen...
    99+
    2022-11-13
  • GO 语言中的对象操作在自然语言处理中有何作用?
    自然语言处理(NLP)是人工智能领域的一个重要研究方向,它旨在让计算机能够理解和处理人类自然语言。在NLP中,对象操作是一种重要的技术,它可以帮助我们对自然语言进行分析和处理。 GO 语言作为一门静态编译型语言,具有高效、简洁、安全等特点...
    99+
    2023-09-05
    自然语言处理 shell 对象
  • C++中对象与类的详解及其作用介绍
    目录什么是对象面向过程 vs 面向对象面向过程面向对象什么是类类的格式类的成员函数函数访问权限方法一方法二方法三inline 成员函数什么是对象 任何事物都是一个对象, 也就是传说中...
    99+
    2022-11-12
  • ASP中对象的作用及其关键字的使用技巧。
    ASP中对象的作用及其关键字的使用技巧 ASP(Active Server Pages)是一种基于服务器端的Web应用程序开发技术。在ASP中,对象起着非常重要的作用,它们被用于处理和管理不同的任务,如数据库连接、文件操作等。在本文中,我们...
    99+
    2023-08-26
    关键字 对象 ide
  • javascript中内置对象Math的介绍及用法案例
    目录前言Math概述Math中常用函数的用法1.绝对值方法2.三个取整方法3.求最大值/最小值4.随机数结语前言 今天总结一下javascript 内置对象Math中的函数用法,顺带...
    99+
    2022-11-13
  • java中的session对象及其常用方法是什么
    本篇内容主要讲解“java中的session对象及其常用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的session对象及其常用方法是什么”吧!session对象用于在会话...
    99+
    2023-06-20
  • 对象在Go语言中的使用方法有哪些?
    Go语言是一种现代化的编程语言,其简单易学、高效、安全等特点,使其成为了越来越多开发者的选择。在Go语言中,对象是一个非常重要的概念,本文将介绍对象在Go语言中的使用方法。 首先,我们需要了解在Go语言中,对象是通过结构体实现的。结构体是一...
    99+
    2023-09-28
    对象 自然语言处理 异步编程
  • Python Ast抽象语法树的介绍及应用详解
    目录引言1. AST简介 2. 创建AST2.1 Compile函数2.2 生成ast 3. 遍历AST3.1 ast.NodeTransfer3.2 ast.N...
    99+
    2022-11-11
  • C++中四种对象生存期和作用域以及static的用法总结分析
    一、四种对象生存期和作用域 栈对象隐含调用构造函数(程序中没有显式调用) 堆对象隐含调用构造函数(程序中没有显式调用),要显式释放 全局对象、静态全局对象 全局对象的构造先于mai...
    99+
    2022-11-15
    对象生存期 作用域 static
  • 编程算法在GO语言中如何应用到对象数组的操作中?
    随着计算机科学的发展,算法的应用越来越广泛。编程算法是计算机科学的基础,它是解决计算机问题的方法和思路,可以帮助程序员更加高效地编写代码。在GO语言中,编程算法可以应用到对象数组的操作中,使得数据的处理更加方便快捷。 一、什么是对象数组 ...
    99+
    2023-10-03
    对象 数组 编程算法
  • 深入学习Go语言中NumPy对象的使用方法
    Go语言作为一种高效、简洁、易于学习的编程语言,在近年来越来越受到程序员们的欢迎。在数据科学领域,NumPy是一个非常常用的Python库,它提供了一个高效的多维数组对象,以及用于处理这些数组的函数。虽然Go语言没有内置的NumPy库,但...
    99+
    2023-08-28
    numpy 对象 教程
  • Python Asyncio中Coroutines,Tasks,Future可等待对象的关系及作用
    目录前记1.Asyncio的入口2.两种Coroutine调用方法的区别3.Task与Future3.1.Future3.2.Task4.总结前记 上一遍文章《Python中Asyn...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作