java List集合与redis数据快速比对

我的需求是,现在有个list集合里面有1000个数据,redis里有400万数据,现在要查找list里的数据是否存在与redis里,由于redis里的数据比较多所以比对算... 我的需求是,现在有个list 集合里面有1000个数据,redis里有400万数据,现在要查找list里的数据是否存在与redis里,由于redis里的数据比较多所以比对算法需要尽可能的高效,希望大家能帮帮忙,能否提供个高效的算法,谢谢……
list里存放的是一个自定义对象,对象有个属性是手机号mobile,redis里存储的是手机号黑名单,发送短信的时候我要判断list里对象的短信号码是否在黑名单里,如果存在就把这个对象从list里删除(或者记录下来)。
展开
 我来答
dw494974325
2014-12-08
知道答主
回答量:29
采纳率:0%
帮助的人:10.1万
展开全部
这个问题 应该没法回答 没法知道你redis里面你数据具体是什么类型存在的?如果也是list 那你就效率就很有问题了,如果用hash就会很快(也就1000次HEXISTS),所以如果你用list 是为了用他的range接口,那你为提高效率可以类似的为这个400W的数据建一个hash类型的索引结构每次维护就维护两种类型的数据,说到底还是看你具体你的数据结构和你redis中的结构的组织问题。
追问
list里存放的是一个自定义对象,对象有个属性是手机号mobile,redis里存储的是手机号黑名单,发送短信的时候我要判断list里的短信号码是否在黑名单里,如果存在就把这个对象从list里删除。
追答
不是 我想知道的是 你redis 里面四百万数据 用的是什么数据类型存的??
string ? list?set? hash?
只身海的边缘
2014-12-08 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:56.3万
展开全部
只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
追问
list里存放的是一个自定义对象,对象有个属性是手机号mobile,redis里存储的是手机号黑名单,发送短信的时候我要判断list里的短信号码是否在黑名单里,如果存在就把这个对象从list里删除。
追答
对你的手机号字段 建立索引,select  COUNT (mobile)from  tablename where  mobile=? 。。。。,100W数据不算大,使用索引,只要服务器不算太差,都不算太慢的,反正比我之前的想法应该要快的多
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式