redis使用的疑惑,抢单的解决方案

json_ycp 2016-04-29 09:29:49
我现在有这样一个需求,就是公司有很多的顾问,每个顾问会维护自己的一批客户,然后每天也可以抢客户,现在业务方要求,每个顾问手里跟进中的客户不能多余300个,要求在抢客户的时候做这样的一个判断,多余300的顾问就不能抢,必须去跟进或者放弃;
然后我这边给出的技术方案是,每个顾问第一次抢的时候,去查询数据库查该顾问手里的跟进中客户数,然后写进redis缓存,并且给每个key一个存活时间,比如5个小时,后面抢的时候从缓存中取,后面顾问放弃客户或者客户付款的时候从redis缓存中做相应的加减,不知道这样的方案怎么样,或者大家有没有合适的方案?
...全文
334 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔不思 2016-05-03
  • 打赏
  • 举报
回复
redis有单点问题,得解决 做完最好压一下。。
oh_Maxy 2016-05-03
  • 打赏
  • 举报
回复
引用 4 楼 y472541642 的回复:
[quote=引用 2 楼 oh_Maxy 的回复:] 你的方案可行。 所有的抢客户动作都要从缓存队列里取,保证并发不出差错。
如果保证并发,对于redis中的数据怎么保证并发时不出现线程安全问题呢,要保证性能的情况下?[/quote] redis 对list操作: lpop(key):返回并删除名称为key的list中的首元素 通过此命令抢锁,实现并发控制。
json_ycp 2016-05-01
  • 打赏
  • 举报
回复
引用 2 楼 oh_Maxy 的回复:
你的方案可行。 所有的抢客户动作都要从缓存队列里取,保证并发不出差错。
如果保证并发,对于redis中的数据怎么保证并发时不出现线程安全问题呢,要保证性能的情况下?
json_ycp 2016-05-01
  • 打赏
  • 举报
回复
引用 3 楼 oh_Maxy 的回复:
如果缓存队列为空,则从数据库取一批顾客信息,加载到缓存。
对,这个是必须的,我对于缓存中的数据有一个期限,如果从缓存中没取到数据,我就会从数据库中取,然后放进缓存中
  • 打赏
  • 举报
回复
引用 7 楼 y472541642的回复:
[quote=引用 6 楼 lp178116060 的回复:] 我对redis只是了解,我个人感觉楼主还需要考虑下,客户变更是不是比较大,如果变更比较大,我感觉redis形同虚设啊
每个顾问的用户数是随着顾问的放弃操作 跟进操作变化的,比如顾问放弃一个,那总数就减1,我用redis缓存只是不想每次都查数据库,因为这个总数的查询比较费时[/quote] 但是如果顾问频繁操作,你这个缓存,会有些拖累吧。我的意思是,我感觉redis比较适合那些数据变化不是很大,或者基本不变化。(我是个新手,有问题楼主可以指出,学习下)
json_ycp 2016-05-01
  • 打赏
  • 举报
回复
引用 6 楼 lp178116060 的回复:
我对redis只是了解,我个人感觉楼主还需要考虑下,客户变更是不是比较大,如果变更比较大,我感觉redis形同虚设啊
每个顾问的用户数是随着顾问的放弃操作 跟进操作变化的,比如顾问放弃一个,那总数就减1,我用redis缓存只是不想每次都查数据库,因为这个总数的查询比较费时
  • 打赏
  • 举报
回复
我对redis只是了解,我个人感觉楼主还需要考虑下,客户变更是不是比较大,如果变更比较大,我感觉redis形同虚设啊
Defonds 2016-04-30
  • 打赏
  • 举报
回复
缓存加减的话得注意和数据库的同步
oh_Maxy 2016-04-30
  • 打赏
  • 举报
回复
如果缓存队列为空,则从数据库取一批顾客信息,加载到缓存。
oh_Maxy 2016-04-30
  • 打赏
  • 举报
回复
你的方案可行。 所有的抢客户动作都要从缓存队列里取,保证并发不出差错。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧