redis命令串行执行问题???

比如有一个点赞功能,服务是集群部署的(8080,8090)两个服务,然后通过nginx做负载均衡。
在并发下,请求可能会被路由到两个服务中去,然后执行redis的hincrby自增操作,按道理来说1000个人点赞就会有1000个赞,但是实际上却不是,点赞数远远少于实际的数量。
这是由于并发造成的。

疑惑:多个客户端连接redis服务,并发送多条自增命令,按道理来说应该是串行执行才对呀,不存在并发。为什么会出现自增的数量不对呢?

阅读 3.5k
2 个回答

自增命令不会有问题.
我倒是很想知道你说的两个服务是啥架构啊? reids-cluster吗? cluster 也不会有问题啊.

如果你是使用jedis操作redis的话。

有一个可能的原因是,jedis的client本身是非线程安全的。在一个服务器上,多线使用一个client操作redis会有并发问题。

可以使用jedispool,在每次操作时都get一个client,然后再去访问,这样就不会有并发问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题