Redis客户端使用

系统 2332 0

http://wenku.baidu.com/view/6ccd650af12d2af90242e63d.html

一、下载jedis 代码

jedis 代码地址: https://github.com/xetorthio/jedis

再次感受到开源的强大。呵呵,大家有时间可以看看源码。

二、项目中如何使用Jedis使用

现在大家都喜欢用maven作为项目管理利器,那我只说明一下Maven如何使用jedis,只需要添加以下依赖就可以。

      
        <
      
      
        dependency
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      redis.clients
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      jedis
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      2.1.0
      
        </
      
      
        version
      
      
        >
      
      
        </
      
      
        dependency
      
      
        >
      
    

 

OK, 用maven管理jar包依赖真的很方便。建议大家都采用maven管理项目。

三、建立一个简单的连接

 

      
        public
      
      
        class
      
       JedisUtil {



    
      
        public
      
      
        static
      
       Jedis createJedis() {

        Jedis jedis = 
      
        new
      
       Jedis(
      
        "127.0.0.1"
      
      );

        
      
        return
      
       jedis;

    }



    
      
        public
      
      
        static
      
       Jedis createJedis(String host, 
      
        int
      
       port) {

        Jedis jedis = 
      
        new
      
       Jedis(host, port);



        
      
        return
      
       jedis;

    }



    
      
        public
      
      
        static
      
       Jedis createJedis(String host, 
      
        int
      
       port, String passwrod) {

        Jedis jedis = 
      
        new
      
       Jedis(host, port);



        
      
        if
      
       (!StringUtils.isNotBlank(passwrod))

            jedis.auth(passwrod);

        

        
      
        return
      
       jedis;

    }

}
    
       
    
      
        创建一个简单Jedis对象就是这样,告诉它的IP地址和端口号就可以,如果redis有密码,那需要在建立连接时,需要调用auth方法设置密码。
      
    
      
        当然,简单连接不适合真实的环境使用,需要有连接池支持 。
      
    
       
    

四、建立Jedis连接池

 

创建连接jedis 连接池,jedis 提供JedisPool对象,使用比较方便。jedis pool 是基于apache common pool 实现。

      package cn.opensv.example.redis;



import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;




      
        public
      
      
        class
      
       JedisPoolUtils {



    
      
        private
      
      
        static
      
       JedisPool pool;



    
      
        /**
      
      
             * 建立连接池 真实环境,一般把配置参数缺抽取出来。
      
      
             * 
      
      
             */
      
      
        private
      
      
        static
      
      
        void
      
       createJedisPool() {



        
      
        // 建立连接池配置参数
      
      

        JedisPoolConfig config = 
      
        new
      
       JedisPoolConfig();



        
      
        // 设置最大连接数
      
      

        config.setMaxActive(100);



        
      
        // 设置最大阻塞时间,记住是毫秒数milliseconds
      
      

        config.setMaxWait(1000);



        
      
        // 设置空间连接
      
      

        config.setMaxIdle(10);



        
      
        // 创建连接池
      
      

        pool = 
      
        new
      
       JedisPool(config, 
      
        "127.0.0.1"
      
      , 6379);



    }



    
      
        /**
      
      
             * 在多线程环境同步初始化
      
      
             */
      
      
        private
      
      
        static
      
       synchronized 
      
        void
      
       poolInit() {

        
      
        if
      
       (pool == 
      
        null
      
      )

            createJedisPool();

    }



    
      
        /**
      
      
             * 获取一个jedis 对象
      
      
             * 
      
      
             * @return
      
      
             */
      
      
        public
      
      
        static
      
       Jedis getJedis() {



        
      
        if
      
       (pool == 
      
        null
      
      )

            poolInit();

        
      
        return
      
       pool.getResource();

    }



    
      
        /**
      
      
             * 归还一个连接
      
      
             * 
      
      
             * @param jedis
      
      
             */
      
      
        public
      
      
        static
      
      
        void
      
       returnRes(Jedis jedis) {

        pool.returnResource(jedis);

    }



}


    

五、Jedis 实现分片

Jedis分片采用Hash算法和基于的Key模式匹配。Jedis定义一个Hash接口,如果觉得自带的不爽,可以自己实现一个Hash算法。Jedis自带的Hash的算法是MurmurHash 2.0 。

MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc++、nginx、libmemcached等开源系统。2011年 Appleby被Google雇佣,随后Google推出其变种的CityHash算法。

官方网站: https://sites.google.com/site/murmurhash/

MurmurHash算法,自称超级快的hash算法,是FNV的4-5倍。

 

      
        /**
      
      
             * 创建分片对象
      
      
             * @return
      
      
             */
      
      
        public
      
      
        static
      
       ShardedJedis createShardJedis() {

        

        
      
        //建立服务器列表
      
      

        List<JedisShardInfo> shards = 
      
        new
      
       ArrayList<JedisShardInfo>();

        

        
      
        //添加第一台服务器信息
      
      

        JedisShardInfo si = 
      
        new
      
       JedisShardInfo(
      
        "localhost"
      
      , 6379);

        si.setPassword(
      
        "123"
      
      );

        shards.add(si);

        

        
      
        //添加第二台服务器信息
      
      

        si = 
      
        new
      
       JedisShardInfo(
      
        "localhost"
      
      , 6399);

        si.setPassword(
      
        "123"
      
      );

        shards.add(si);

        
      
        //建立分片连接对象
      
      

        ShardedJedis jedis = 
      
        new
      
       ShardedJedis(shards);        

        

        
      
        //建立分片连接对象,并指定Hash算法
      
      
        //ShardedJedis jedis = new ShardedJedis(shards,selfHash);
      
      
        return
      
       jedis;

    }
    

分片也可以支持连接池,具体如下:

      
        private
      
      
        static
      
      
        void
      
       createPool() {

        List<JedisShardInfo> shards = 
      
        new
      
       ArrayList<JedisShardInfo>();

        JedisShardInfo si = 
      
        new
      
       JedisShardInfo(
      
        "localhost"
      
      , 6379);

        si.setPassword(
      
        "123"
      
      );

        shards.add(si);

        si = 
      
        new
      
       JedisShardInfo(
      
        "localhost"
      
      , 6399);

        si.setPassword(
      
        "123"
      
      );

        shards.add(si);

        pool = 
      
        new
      
       ShardedJedisPool(
      
        new
      
       JedisPoolConfig(), shards);

    }
    

其它与普通的连接池没有区别。

除Jedis是redis的Java客户端实现,还有其他的一些开源库,如:Spring Redis Data ,不过功能还不够强大。

Redis客户端使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论