求问一个redis处理list的问题

[复制链接]
查看11 | 回复10 | 2021-1-27 06:43:52 | 显示全部楼层 |阅读模式
由于对redis并不是太熟悉,今天遇到一个问题,不是太清楚应该怎么样处理更合适,另外也有一些疑问,期望牛牛们,可以帮忙一下,感谢了。
就是如果redis中一个list很大,即list里面存的数据很多。现在在Java代码中处理该list,那么Java中每次pop或者push的时候,都会需要一个新的链接吗?如果用类似LRANGE,那怎么样删掉已经取出来的数据呢?
或者如果对于redis中一个list很大的情况,要怎么样处理比较合适呢?
我真的不知道在哪里输入积分。真的不知道,我也不想发蛋贴的。我真的不知道呀。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
不太清楚具体场景,处理list的场景频繁吗?能否对list进行拆分。不会存在每次操作这个list需要新的链接,redis连接池可以设置,其中的开销可以忽略不记。而且你说的list很大大概是多大,写redis的时候可以压缩一下再存,总之可操作的手段很多,需要根据实际情况来定
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
引用1楼u012318873的回复:不太清楚具体场景,处理list的场景频繁吗?能否对list进行拆分。不会存在每次操作这个list需要新的链接,redis连接池可以设置,其中的开销可以忽略不记。而且你说的list很大大概是多大,写redis的时候可以压缩一下再存,总之可操作的手段很多,需要根据实际情况来定
嗯,谢谢你的回复了。是今天面试的时候问到的呢。
当时我说的场景是,list里面存放一些失败操作的用户id,然后会有定时作业去处理这个list
面试官说,list如果很大,每次pop的时候不会占用连接吗?然后我就懵了,我也不知道呀。所以没有具体的业务场景,意思就是list里面的数据非常大。如果用连接池,每次pop的时候,是不是去连接池里面取连接呢,如果是的话,那还是每次pop操作都需要连接一次数据库,是这样的吗?
我的疑问是,每次pop操作的时候,会不会连接一次redis。

回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
我不明白这个场景下想问的是什么。问连接池?还是redis本身处理数据,又或是list如何处理大量数据?

回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
要不要加入我的Java群?里面很多热心人帮你解答和分析哦。群号:157797573

回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
引用4楼shijing266的回复:要不要加入我的Java群?里面很多热心人帮你解答和分析哦。群号:157797573
谢谢你了,我稍后假如群吧。
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
引用3楼执笔记忆的空白的回复:我不明白这个场景下想问的是什么。问连接池?还是redis本身处理数据,又或是list如何处理大量数据?面试官的意思可能是你的list可能会很大,处理可能需要非常频繁访问redis对应就可能会占用更多的链接,留给其他的就会少了。在业务量大的时候可能会导致连接池被耗尽。
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
如果用jedis的话,是会重新打开一个连接的,除非你自己写了个连接池或者说一直开一个连接,如果是用springdata-redis则不用考虑这个问题,因为redisTemplate是用连接池管理的。你说的其他方面没怎么看懂,不知道想问啥
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
引用7楼masteryourself的回复:如果用jedis的话,是会重新打开一个连接的,除非你自己写了个连接池或者说一直开一个连接,如果是用springdata-redis则不用考虑这个问题,因为redisTemplate是用连接池管理的。你说的其他方面没怎么看懂,不知道想问啥
嗯嗯,谢谢你了。
他的意思应该就是list数据量很大的情况下,数据库连接问题。
另一个问题就是,如果用类似lrange命令获取list的元素。因为pop每次就获取一个元素,并且在获取后在list中就删除了该元素。但是用lrange可以一次性获取很多,比如获取5个,但是lrange命令只是获取,并没有将获取的元素移出list队列。那要怎么样清空list呢。
回复

使用道具 举报

千问 | 2021-1-27 06:43:52 | 显示全部楼层
引用6楼FangYANYI的回复:Quote: 引用3楼执笔记忆的空白的回复:我不明白这个场景下想问的是什么。问连接池?还是redis本身处理数据,又或是list如何处理大量数据?面试官的意思可能是你的list可能会很大,处理可能需要非常频繁访问redis对应就可能会占用更多的链接,留给其他的就会少了。在业务量大的时候可能会导致连接池被耗尽。
嗯嗯,就是这个意思。
除了用到数据库连接池。还有其他的优化方式或者处理方式吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行