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

参与6

2同行回答

lxuelxue数据库管理员某互联网公司
Redis 为单进程单线程模式,采用队列模式将并发访问变为串行访问。 Redis 本身没有锁的概念, Redis 对于多个客户端连接并不存在竞争,但是在 Jedis 客户端对 Redis 进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造...显示全部

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

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

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

注:对于第一种,需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用 synchronized 也可以使用 lock ;第二种需要用到 Redis 的 setnx 命令,但是需要注意一些问题。

收起
互联网服务 · 2020-01-14
浏览1754
Luga LeeLuga Lee系统架构师None
若基于分布式环境,可采用以下方案:1、分布式锁2、消息队列显示全部

若基于分布式环境,可采用以下方案:
1、分布式锁
2、消息队列

收起
互联网服务 · 2020-01-16
浏览1572

提问者

andyfa
软件开发工程师某证券
擅长领域: 数据库大数据服务器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-01-13
  • 关注会员:3 人
  • 问题浏览:3169
  • 最近回答:2020-01-16
  • X社区推广