并发导致redis rightPush重复数据,求助!
求教。
这么个场景,用的SpringCloud,我用feign远程调用了公司内部的一个大数据服务的一个获取数据+计算的接口,得到的是list,这个接口耗时较长,大概十几秒钟,所以用了redis缓存。由于还要分页,所以将list中的元素遍历,用rightPush依次扔到redis中的某个key中。
这样的话就会有个问题,多个请求同时到达时,都会判断redis key中是否有值,没值的时候再调用大数据服务接口,然后遍历依次存储,这样就会导致redis中存储的数据重复。
想达到这么个效果:假设同时进来了100个请求,第一个请求去判断redis key是否有值,没值的话就去调用大数据接口,获取数据再保存到redis中,剩下的99个请求在之后再判断key是否有值。
请大家不吝赐教。