查看其它 1 个回答lxue的回答

lxuelxue数据库管理员某互联网公司

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

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

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

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

互联网服务 · 2020-01-14
浏览1757

回答者

lxue
lxue006
数据库管理员某互联网公司
擅长领域: 数据库人工智能大数据

lxue 最近回答过的问题

回答状态

  • 发布时间:2020-01-14
  • 关注会员:3 人
  • 回答浏览:1757
  • X社区推广