关闭

Redis JedisPoll 介绍

537人阅读 评论(1) 收藏 举报
分类:

在不同的线程中使用相同的Jedis实例会发生奇怪的错误。

  但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。

  单一Jedis实例不是线程安全的。

  为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能。


【初始化JedisPool】
  JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
可以以静态的方式处理以上代码,它是线程安全的。


JedisPoolConfig包含了许多有用的redis指定的连接池的默认参数。比如,如果一个连接300秒内没有任何的返回Jedis将关闭这个连接。


01 Jedis jedis = pool.getResource();
02 try {
03 //随便做一些对于redis的操作
04 jedis.set("foo", "bar");
05 String foobar = jedis.get("foo");
06 jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike");
07 Set<String> sose = jedis.zrange("sose", 0, -1);
08 } finally {
09 //这里很重要,一旦拿到的jedis实例使用完毕,必须要返还给池中
10 pool.returnResource(jedis);
11 }
12 //程序关闭时,需要调用关闭方法
13 pool.destroy();


【设置主/从分布】
启用同步复制
Redis主要为了主/从分布而构建。这意味着"write"请求必须要指向"master", "master"会同步复制改变的内容到"slave". "read"请求可以(不是必须的)被指向"slave",缓解"master"的读写压力.
可以按以下的步骤使用"master". 为了启用同步复制,有两个方式去告诉"slave"将"slaveOf"到一个给定的"master":
1.在redis server的config文件(redis.conf)指明
2.在拿到的jedis实例中调用"slaveOf"方法并指定IP和端口


1 jedis.slaveOf("192.168.1.35", 6379);
注意:"slave"也是一个redis server,也可以接收"write"请求并不会报错,但是改变不会被同步复制,所以如果弄反了jedis的实例则一些操作会被覆盖.


禁用同步复制/master失败后,提升slave
如果"master"down掉,可以提升"slave"成为新的"master".首先试着禁用同步复制离线的"master",如果有几个"slave",启用同步复制其余的"slave"到新的"master".
1 slave1jedis.slaveofNoOne();
2 slave2jedis.slaveOf("192.168.1.36", 6379);


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Redis 整合spring ,做mysql的缓存

项目环境: 在Spring MVC + MyBatis + Mysql。Redis部署在Linux虚拟机。 1、整体思路 参考Ehcache实现MyBatis二级缓存代码(Maven引用对应jar...
  • u013378306
  • u013378306
  • 2016-07-30 21:13
  • 15120

Linux C——poll函数实现多路复用

多路复用    多路复用一般用于I/O操作可能会被阻塞的情况,对可能会有阻塞的I/O的管道、网路进行编程。 采用管道函数创建有名管道,使用select函数替代使用poll函数实现多路复用:...
  • Eleanor_12
  • Eleanor_12
  • 2016-10-28 21:49
  • 313

Linux Poll 使用方法和实现

Linux socket之四:使用POLL机制处理多连接         使用select函数可以处理socket多连接的问题(select的用法参见:http://blog.csdn....
  • zhuxiaoping54532
  • zhuxiaoping54532
  • 2016-06-17 17:34
  • 1570

Linux网络编程——I/O复用之poll函数

一、回顾前面的select select优点: 目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点 select缺点: 1.每次调用 select(),都...
  • lianghe_work
  • lianghe_work
  • 2015-06-17 15:09
  • 5326

linux poll 使用简单例子

可以监听多个客户端,代码比select简洁。直接上服务端代码,测试可以用telnet。  #include #include #include #include #include #inc...
  • dongdongbusi
  • dongdongbusi
  • 2015-01-23 23:09
  • 757

linux的poll机制

Poll就是监控文件是否可读的一种机制,作用与select一样。 应用程序的调用函数如下: int poll(struct pollfd *fds,nfds_t nfds, int timeout)...
  • yangsong512
  • yangsong512
  • 2013-10-07 21:14
  • 9156

poll()函数实例

poll()函数的使用
  • a1028732302
  • a1028732302
  • 2016-05-24 10:09
  • 1389

Linux Poll函数初级实例

网络编程
  • XW370168409
  • XW370168409
  • 2016-12-01 22:36
  • 373

Linux网络编程——tcp并发服务器(poll实现)

想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》 代码: #include #include #include #include #incl...
  • lianghe_work
  • lianghe_work
  • 2015-06-17 17:13
  • 3010

浅析 Linux poll 机制

在用户空间应用程序向驱动程序请求数据时,有以下几种方式: 1、不断查询,条件不满足的情况下就是死循环,非常耗cpu 2、休眠唤醒的方式,如果条件不满足,应用程序则一直睡眠下去 3、poll机制,如果条...
  • lizuobin2
  • lizuobin2
  • 2016-09-29 21:05
  • 1111
    个人资料
    • 访问:320246次
    • 积分:6245
    • 等级:
    • 排名:第4587名
    • 原创:212篇
    • 转载:457篇
    • 译文:1篇
    • 评论:66条