开发者社区> 问答> 正文

Redis 的并发竞争问题如何解决,了解 Redis 事务的 CAS 操作吗。

Redis 的并发竞争问题如何解决,了解 Redis 事务的 CAS 操作吗。

展开
收起
游客pklijor6gytpx 2019-12-05 15:20:07 1963 0
1 条回答
写回答
取消 提交回答
  • Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:

    1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。

    2.服务器角度,利用setnx实现锁。

    MULTI,EXEC,DISCARD,WATCH 四个命令是 Redis 事务的四个基础命令。其中:

    MULTI,告诉 Redis 服务器开启一个事务。注意,只是开启,而不是执行 EXEC,告诉 Redis 开始执行事务 DISCARD,告诉 Redis 取消事务 WATCH,监视某一个键值对,它的作用是在事务执行之前如果监视的键值被修改,事务会被取消。 可以利用watch实现cas乐观锁

    2019-12-05 15:20:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ApsaraDB for Redis——与创客同行 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载