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客户端使用的更多相关文章

  1. StackExchange.Redis客户端读写主从配置,以及哨兵配置。

    今天简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置. 关于哨兵如果有不了解的朋友,可以看我之前的一篇分享,当然主从复制文章也可以找到.http://www.cnb ...

  2. c#实现redis客户端(一)

    最近项目使用中要改造redis客户端,看了下文档,总结分享一下. 阅读目录: 协议规范 基础通信 状态命令 set.get命令 管道.事务 总结 协议规范 redis允许客户端以TCP方式连接,默认6 ...

  3. 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查

    问题产生 这两天业务系统在redis的使用过程中,当并行客户端数量达到200+之后,产生了大量timeout异常,典型的异常信息如下: Timeout performing HVALS Parser2 ...

  4. Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置

    Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...

  5. 从零开始写redis客户端(deerlet-redis-client)之路——第一个纠结很久的问题,restore引发的血案

    引言 正如之前的一篇博文,LZ最近正在从零开始写一个redis的客户端,主要目的是为了更加深入的了解redis,当然了,LZ也希望deerlet客户端有一天能有一席之地.在写的过程当中,LZ遇到了一个 ...

  6. Redis 客户端配置及示例

    一.redis自定义配置节点 <configSections> <section name ="RedisConfig" type="Amy.Toolk ...

  7. Redis客户端Java服务接口封装

    最近在学习Redis并集成到Spring中去,发现Spring的RedisTemplate并不好用,还没有MongoTemplate好用. 而且发现Jedis和ShardedJedis的方法非常多,覆 ...

  8. "Redis客户端连接数一直降不下来"的有关问题解决

    [线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...

  9. spring整合redis客户端及缓存接口设计(转)

    一.写在前面 缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存.有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器.但是无论使用哪种缓存,接口中的方法都是差不多. ...

  10. 全球领先的redis客户端:SFedis

    零.背景 这个客户端起源于我们一个系统的生产问题. 一.问题的发生 在我们的生产环境上发生了两次redis服务端连接数达到上限(我们配置的单节点连接数上限为8000)导致无法创建连接的情况.由于这个系 ...

随机推荐

  1. python+django+mysql配置步骤

    安装python 详细步骤见:地址 1. 从 http://www.python.org/download/ 下载最新的python版本 (我用的是python2.6, 当时最稳定的) 2. 然后一路 ...

  2. Java(Android)线程池[转]

    介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...

  3. DOM数据解析

    //DOM : Document Object Model ,一种XML解析的方式,先读取整篇的内容,然后再进行解析,解析速度比较快,如果内出现错误,解析就会失败,iOS不支持DOM解析,goole提 ...

  4. 来回最短路POJ3268

    这个题得主要考点在于给你的图是去了再回来得有向图,如何模块化解决呢就是转变图的方向,我们根据初始得放心求出每个点到x得最短路,然后转变所有路得方向再求出所有点到x得最短路,最后一相加就是最后的来回了~ ...

  5. Android-CallUtil工具类

    打电话相关的工具类: public final class CallUtil { /** * 拨打电话(直接拨打电话) * @param phoneNum 电话号码 */ @SuppressLint( ...

  6. Centos 7 安装 FFmpeg

    Step 1: Update the system sudo yum install epel-release -y sudo yum update -y sudo shutdown -r now S ...

  7. 微软DevOps软件开发高级培训课程(深圳站) 2016.04.06

    深圳特区云集了国内众多大型IT企业,作为北上广深的一线城市,当之无愧! 我们在深圳同方信息港的微软办公室是举行培训,60人的培训教室,生生被挤满了80人,过道都被全部占用了.可惜由于换了电脑,把照片搞 ...

  8. image的关闭和开启

    image1.gameObject.SetActive(true);开启image,image1.gameObject.SetActive(false);关闭image,可以用事件或者button开启 ...

  9. C#treeView控件单击事件选中节点滞后问题解决方法

    问题描述:在treeView的Click事件中,选中的节点SelectedNode并不是您刚才点击的节点,总是上一次选中的节点,节点选中滞后的问题. 解决方案:在treeView的MouseDown事 ...

  10. kubernetes1.9管中窥豹-CRD概念、使用场景及实例

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 默认读者有kubernetes基础概念的背景知识,因此基础概念例如有状态.pod.Replica Sets.Deployments.state ...