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