redis get

来源:10-1 怎么正确的选择数据类型,让维护不再是噩梦

奶茶三兄弟d

2021-03-21

老师,我想问下,假如我有个执行器类,这个类专门是消费上一层执行器存储在阻塞队列的内容,有可能要不间断执行几十万次甚至到百万,那么中间需要不断去redis中get,获取一个Set,那么这样的话,这样会慢嘛,虽然是内存数据库,但是这么频繁调用redis,需要考虑io嘛,谢谢老师

写回答

1回答

张勤一

2021-03-22

同学你好:

    频繁去调用 Redis 的同一个 Key,对于你当前的业务来说肯定是不可取的;这不仅仅是 IO 的问题,还有网络的问题、与 Redis 建立连接的问题。

    对于 Set 这种容器类的数据结构,获取数据要么是一次性的获取,要么是分批次获取;对于你这里如此大的数据量,分批次(sscan)去获取,而不是一次获取一个元素。


    我是勤一,欢迎随时找我!

1
1
奶茶三兄弟d
老师是这样,前一次缓存Set数据(调用别人系统接口获取到的数据),里面内容大概不到2000这样,就是当前执行器的方法由于是不断消费上一层队列的内容(直到上一层队列不再有数据为止),所以可能要处理几十万次以上,然后我这里肯定不能每次都调用别人系统接口,那就太慢了,所以想着redis,但是要取这么多次,老师说的也是的,I/O的问题,网络的问题(虽然redis跟当前服务在同一台机器上)。。。。 老师,我想着既然必须要缓存数据,那我用guava的本地缓存可以嘛,缓存大概1小时足够了(全局的map肯定不行,当前类是一个bean,如果设置了全局map这个成员变量就是强引用,不会被回收,随着时间推移,肯定越来越大)
2021-03-22
共1条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

452 学习 · 204 问题

查看课程