zoukankan      html  css  js  c++  java
  • Java连接redis的使用示例

    在多线程下使用Jedis 

      在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能. 

    初始化JedisPool 

    JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

    可以以静态的方式处理以上代码,它是线程安全的. 

    static {
            pool = new JedisPool(new Config(), "host", 6379);
        }

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

    可以这样使用:

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

    设置主/从分布 

    启用同步复制 

      Redis主要为了主/从分布而构建。这意味着"write"请求必须要指向"master", "master"会同步复制改变的内容到"slave". "read"请求可以(不是必须的)被指向"slave",缓解"master"的读写压力. 

    可以按以下的步骤使用"master". 为了启用同步复制,有两个方式去告诉"slave"将"slaveOf"到一个给定的"master": 


     1.在redis server的config文件(redis.conf)指明 
     2.在拿到的jedis实例中调用"slaveOf"方法并指定IP和端口 

    jedis.slaveOf("192.168.1.35", 6379);

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

      禁用同步复制/master失败后,提升slave 
      如果"master"down掉,可以提升"slave"成为新的"master".首先试着禁用同步复制离线的"master",如果有几个"slave",启用同步复制其余的"slave"到新的"master". 

    slave1jedis.slaveofNoOne(); 
    slave2jedis.slaveOf("192.168.1.36", 6379);
     
  • 相关阅读:
    链表操作二——中间结点的删除等
    stack vector queue 等的实现方式<<0922
    任何和日期相关的函数都在这里<<0922
    类函数返回该类的问题<<0922
    Android学习笔记之PullToRefreshListView和BaseAdapter的使用
    记录Android学习过程中遇到的问题
    ruby appium 准备环境
    os x升级到10.10后appium不能测试通过的解决办法
    appium 在ios模拟器上面成功运行
    appium IOS真机测试
  • 原文地址:https://www.cnblogs.com/mjorcen/p/3978729.html
Copyright © 2011-2022 走看看