美文网首页
Redis 的并发竞争问题如何解决

Redis 的并发竞争问题如何解决

作者: 杰哥长得帅 | 来源:发表于2019-01-04 15:00 被阅读120次

Redis 为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis 本身没有锁的概念,Redis 对于多个客户端连接并不存在竞争,但是在业务客户端对 Redis 进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成

解决方法:

  • 客户端加锁(synchronized)
  • 乐观锁(redis 的命令 watch):
    当执行多键值事务操作时,Redis 不仅要求这些键值需要落在同一个 Redis 实例上,还要求落在同一个 slot 上,所以 redis 的事务比较鸡肋
    不过可以想办法遵循 redis 内部的分片算法把设计到的所有 key 分到同一个 slot
  • redis 的 setnx 实现内置的锁:
    要设置超时时间,防止抢占到锁的客户端因失败、崩溃或其他原因没有办法释放锁而造成死锁

相关文章

网友评论

      本文标题:Redis 的并发竞争问题如何解决

      本文链接:https://www.haomeiwen.com/subject/ugzqrqtx.html