之前在做统计相关功能的时候,使用到了redis的keys,但是,跑了一段时间后,被运维的慢查询给抓出来了,说这个太慢了,需要10ms(平常的命令只需要2-3ms),并且keys会造成阻塞,影响其他进程。。。

好吧,那就改成scan。本来是是想拿百度现成的来用,但是,居然没有搜索到!amazing!好吧,那就只能扒官方了。

1.官网

首先找到Spring Data Redis官网,然后进入API链接,

2.Scan

然后,

3.ScanOptions---->Scan方法的参数

这里可以看到,scan方法,需要一个scanOptions参数,点进scanOptions类,发现scanOptons有个静态内部类--scanOptionsBuilder

4.scanOptionsBuilder--->构造ScanOptions

scanOptionsBuilder类,又有count、match、build三个方法。看描述,match是充当匹配的作用,count是返回匹配到的数目,build是scanOptionsBuilder转换为scanOptions对象

看了这么多,其实转换为代码,就一行而已

 
  1. ScanOptions options = ScanOptions.scanOptions().match(workQKey).count(Integer.MAX_VALUE).build();

  2. Cursor c = redisConnection.scan(options);

  3. while (c.hasNext()) {

  4. logger.info(new String((byte[]) c.next()));

  5. }

5.scanOptionsBuilder的count参数

测试了一番,和keys的效果是一致的。but,count的参数为什么是Integer.MAX_VALUE呢?我尝试了下,把Integer.MAX_VALUE改成了100(需要统计的key有122个),然后,就飙红了

但是,你把count从100改成大于等于122,那就正常运行。按这规律,是count的参数必须不小于实际数量?我也在stackoverflow看到一篇帖子,说的貌似也是要这样解决。。

Jedis scan及其count的值相关推荐

  1. Oracle sql 对多个sql count的值再求和

    最近写需求,第一次遇到对多个sql count的值再进行求和,赶紧做个笔记~ 对多个sql count的值再求和: select count(1) countnum from user c where ...

  2. 如何理解count=count++,count的值不变

    能进来的朋友肯定跟我一样对于count = count++的结果很不解,希望看完你有收获. 先看一段代码 public class CountTest {public static void main ...

  3. mysql count 返回值_COUNT(*)总是返回结果吗?

    是的,"count"函数本身的返回值始终是非null整数,无例外. 话虽如此,您可能对查询的返回值更感兴趣,这实际上是一个结果集.如果是这种情况,那么您只需要考虑您的查询是否包含& ...

  4. jedis中scan的实现

    我的版本说明: redis服务端版本:redis_version:2.8.19 jedis: <dependency> <groupId>redis.clients</g ...

  5. 如何修改Series和DataFrame类型中的元素值_Redis的HSCAN命令中COUNT参数的失效场景

    前提 ❝ 这是一篇Redis命令使用不当的踩坑经历分享 ❞ 笔者最近在做一个项目时候使用Redis存放客户端展示的订单列表,列表需要进行分页.由于笔者先前对Redis的各种数据类型的使用场景并不是十分 ...

  6. Redis命令:scan实现模糊查询

    1.scan前言 从Redis v2.8开始,SCAN命令已经可用,它允许使用游标从keyspace中检索键. 对比KEYS命令,虽然SCAN无法一次性返回所有匹配结果,但是却规避了阻塞系统这个高风险 ...

  7. Redis - 使用scan代替keys与hgetall操作

    1.scan前言 当我们使用 keys * 或 hgetall 进行查询的时候会进行堵塞,导致 redis 整体不可用(因为redis是单线程的),而使用 scan 命令则不会. 从Redis v2. ...

  8. redis 用scan 代替keys,hgetAll

    转载自:https://blog.csdn.net/w05980598/article/details/80264568 众所周知,当redis中key数量越大,keys 命令执行越慢,而且最重要的会 ...

  9. redis sscan java_redis 用scan 代替keys,hgetAll

    转载自:https://blog.csdn.net/w05980598/article/details/80264568 众所周知,当redis中key数量越大,keys 命令执行越慢,而且最重要的会 ...

  10. Redis客户端之Jedis(Key、String、Set、List、pub/sub、cluster、pool、pipleline)

    原文链接:http://blog.csdn.net/xyang81/article/details/51918129 环境: OS:CentOS7 64位 server版本:Redis 3.2.0 c ...

最新文章

  1. 今晚8点直播 | 双11的背后除了阿里还有顺丰,智慧物流是如何利用深度学习赋能的?...
  2. ICML 2018 | 清华排名国内居首:大会论文接收情况一览
  3. 【字符串】最长回文子串 ( 蛮力算法 )
  4. 360怎么看电脑配置_Win10系统自带杀毒和垃圾清理好么?需不需要安装360卫士
  5. ACL 2021 | 为什么机器阅读理解模型会学习走捷径?
  6. 强连通分量(Strongly_Connected_Components)
  7. 十大技巧优化Android App性能
  8. python变量持久化_Python 数据持久化:JSON
  9. 第二个spring冲刺总结
  10. 单片机c语言模块化实例程序设计,单片机C语言模块化设计
  11. Web开发者一定会用的5个google浏览器插件
  12. mysql error 28,MySQL错误:Got error 28 from storage engine
  13. java拦截器要怎么写_SpringMVC中的拦截器详解及代码示例
  14. html邮件和英文邮件,英文邮件中Best wishes和Best regards的区别
  15. (C++)输入两个正整数m和n,求其最大公约数和最小公倍数(辗转相除法)
  16. Burp Suite设置浏览器代理
  17. SQL面试题:经典50例
  18. 工具分享:ideaIU-2019.2.4_windows正版最新(附下载链接)
  19. ICMPv6与NDP
  20. python大气校正_sen2cor批量大气校正Sentinel2数据——python代码

热门文章

  1. 昆特牌显示无法连接至服务器,巫师之昆特牌总是显示无法连接网络
  2. 汕头大学计算机转专业,2021年汕头大学大一新生转专业及入学考试相关规定
  3. 电脑故障恢复控制台命令
  4. python多线程爬取美图录网站图集按模特姓名存储到本地(二)
  5. Java自动装箱与自动拆箱(包装类)以及Integer和Double的valueOf()源码分析
  6. 搭建完全分布式HBase
  7. 第一章-问题求解策略-LA4238-Area of Polycubes
  8. DDD(领域驱动设计)系列主题:DDD战略设计和战术设计分析流程及关键输出物
  9. 计算机专业装win几,老电脑装win7还是win10_老电脑装win10还是win7
  10. 葫芦娃登录后显示服务器维护,葫芦娃手游新手常见问题解答