开发者社区> 问答> 正文

高并发写入删除同一个key的问题:报错

系统中有这么一个需求,高并发的向redis中某个key写入list,这时候系统中还有一个后台任务,每隔一秒钟获取redis中的list并把获取到的list从redis中删除,最后发现数据存在丢失的现象。猜测是,在获取到list,代码还没执行到删除key的时候,这时候高并发又有新的数据写入到key中,举例如:读取key的时候里面有500条数据,在获取到list后删除之前,又有2条数据写入到key中这时候删除key就会多删除2条。

想问下,如何避免这种问题,或者redis对类似这种高并发写入一个key又有删除的情况下,有什么好的方式处理呢?希望不吝赐教!

展开
收起
kun坤 2020-06-06 16:59:19 520 0
1 条回答
写回答
取消 提交回答
  • lpush rpop 用这个多好,既方便又简单。######用事务,redis支持的,卖点之一。######

    引用来自“wys444”的答案

    lpush rpop 用这个多好,既方便又简单。

    按照先进先出的原则是 rpush 和 lpop 按照你的方式真的解决了问题,谢谢!

    之前使用的是:

    list = jedis.lrange(key, 0, -1);
    jedis.ltrim(key, list.size(), -1);

    达到的效果是一样的,谢谢你的回答!
     

    2020-06-06 16:59:25
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
徐雷-Java为王,互联网高并发架构设计与选型之路6.0 立即下载
Redis 的高并发实战:抢购系统 立即下载
MySQL高并发场景实战 立即下载