问题描述
假定有5个客服,每个客服都需要随机对100个客户进行电话调查,那么有什么算法可以保证这5个客服自己从数据库中取出的客户没有重复并且客服之间也没有重复呢
解决方案
解决方案二:
取的时候给表加独占的锁给要取出的记录做个标记表明此记录正在处理(更改某个字段的值),然后取出来.所有人去取记录的时候都要取未标记的
解决方案三:
实现这个好像主要是在数据的隔离级别上设置比较有效要是在代码中判断不怎么好,个人认为
解决方案四:
将100个客户的ID一起取出来,放入list中,写个方法加上同步后访问list并清除取出后的ID,这样保证不会重复。
解决方案五:
本人认为1楼方式比较好。
解决方案六:
可以把表示五个客服的唯一id追加到随即数据的最前边或最后边,这样保证不重复。
解决方案七:
引用4楼rumlee的回复:
本人认为1楼方式比较好。
一楼的做法是最容易想到的方式,这种方式要对用户非正常退出的情况花些功夫
解决方案八:
在数据库上使用隔离级别看上去也能解决问题,但是隔离级别只是为了处理事务的并发问题,当一个事务完成,即一个客服完成了对客户的访问后,另一个客服在独占锁解除后,让能对客户操作。不知道楼主是否允许这样的操作?如果楼主只想让每个客服对客户只操作一次,隔离级别的方案恐怕不能解决问题。或许业务流程的思想能解决问题,把需要调查的客户当做需要处理的任务,5个不同的客服都从任务列表中读取任务,这样应该能解决问题吧?类似于银行的排号机的实现。
解决方案九:
楼上各位真是速度啊,刚还是只有2楼,我提交的时候都到7楼了。
时间: 2024-08-02 00:41:43