zoukankan      html  css  js  c++  java
  • Redis并发问题

    Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:
    1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。比如java中的jedisPool。
    Jedis是一个Java语言的Redis客户端,它为Java语言连接与操作Redis提供了简单易用的接口。
    Jedis不是线程安全的,故不应该在多线程环境中共用一个Jedis实例。但是,也应该避免直接创建多个Jedis实例,因为这种做法会导致创建过多的socket连接,性能不高。
    要保证线程安全且获得较好的性能,可以使用JedisPool。JedisPool是一个连接池,既可以保证线程安全,又可以保证了较高的效率。

    2.服务器角度,利用setnx实现锁。
    语法:
    SETNX key value

  • 相关阅读:
    Ruby on Rails Tutorial笔记
    Gollum安装
    适合新手学习的Rails开源项目
    Rails开发网站流程
    解决Rails找不到Javascript的错误
    工具汇总
    BrowserCMS安装
    Head First Html, CSS, Xhtml
    在80端口运行Rails server
    Ubuntu下安装Balsamiq Mockups
  • 原文地址:https://www.cnblogs.com/wzj4858/p/8193977.html
Copyright © 2011-2022 走看看