目录
1 JEDIS简介 1
2 JEDIS简单使用 1
3 JEDIS的池使用 2
4 JEDIS的分布式 4
1 Jedis简介
Jedis是Redis的java客户端。我们可以在java编程中使用它来编写java代码访问Redis服务。
关于Redis简绍:http://xmong.iteye.com/blog/1840242
要使用Jedis可以通过maven来获取
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.1.0</version> <type>jar</type> <scope>compile</scope> </dependency> |
也可以通过下面路径来下载Jedis包,将包加到java工程里面就可以了。
https://github.com/xetorthio/jedis/downloads
当前使用的包名:jedis-2.1.0.jar
2 Jedis简单使用
Jedis的简单使用代码如下:
import redis.clients.jedis.Jedis;
/** * 简单使用jedis * * @author xmong */ publicclass TestJedis {
// redis服务器主机 static String host = "172.30.5.117"; // 端口号 staticintport = 6379; publicstaticvoid main(String[] args) { // 根据redis主机和端口号实例化Jedis对象 Jedis jedis = new Jedis(host, port); // 添加key-value对象,如果key对象存在就覆盖该对象 jedis.set("name", "xmong"); // 查取key的value值,如果key不存在返回null String value = jedis.get("name"); System.out.println(value); // 删除key-value对象,如果key不存在则忽略此操作 jedis.del("name"); // 判断key是否存在,不存在返回false存在返回true jedis.exists("name"); } } |
3 Jedis的池使用
我们在实现jedis池使用的时候除了要将jedis包引入工程外,还需要将apache的commons-pool-xx包也引入工程,因为 JedisPool实际是应用apache的GenericObjectPool来作为redis连接经管pool的,这点可以从分析Jedis的源码知道。
Commons-pool-1.6.jar包下载:
http://commons.apache.org/proper/commons-pool/download_pool.cgi
Redis配置文件(redis.properties)如下:
#redis服务器ip # redis.ip=172.30.5.117
#redis服务器端口号# redis.port=6379
###jedis##pool##config### #jedis的最大分配对象# jedis.pool.maxActive=1024
#jedis最大保存idel状态对象数 # jedis.pool.maxIdle=200
#jedis池没有对象返回时,最大等待时间 # jedis.pool.maxWait=1000
#jedis调用borrowObject方法时,是否进行有效检查# jedis.pool.testOnBorrow=true
#jedis调用returnObject方法时,是否进行有效检查 # jedis.pool.testOnReturn=true |
代码实现如下:
import java.util.ResourceBundle;
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig;
/** * jedis池使用 * * @author xmong */ publicclass MyJedisPool {
// jedis池 privatestatic JedisPool pool; // 静态代码初始化池配置 static { // 加载redis配置文件 ResourceBundle bundle = ResourceBundle.getBundle("redis"); if (bundle == null) { thrownew IllegalArgumentException("[redis.properties] is not found!"); } // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 config.setMaxActive(Integer.valueOf(bundle.getString("redis.pool.maxActive"))); config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle"))); config.setMaxWait(Long.valueOf(bundle.getString("redis.pool.maxWait"))); config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn"))); // 根据配置实例化jedis池 pool = new JedisPool(config, bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port"))); }
/** * 测试jedis池方法 */ publicstaticvoid test1() { // 从jedis池中获取一个jedis实例 Jedis jedis = pool.getResource();
// 获取jedis实例后可以对redis服务进行一系列的操作 jedis.set("name", "xmong"); System.out.println(jedis.get("name")); jedis.del("name"); System.out.println(jedis.exists("name"));
// 释放对象池,即获取jedis实例使用后要将对象还回去 pool.returnResource(jedis); }
publicstaticvoid main(String[] args) { test1();// 执行test1方法 } } |
执行结果如下:
xmong false |
4 Jedis的分布式
Redis在容灾处理方面可以通过服务器端配置Master-Slave模式来实现。而在分布式集群方面目前只能通过客户端工具来实现一致性哈希分布存储,即key分片存储。Redis可能会在3.0版本支持服务器端的分布存储。
下面看看Jedis是怎样实现Redis分布存储的。
在上面的列子中我们只需要修改部分代码即可实现Redis的分布存储功能。
修改Redis配置文件中reidis服务器配置选项:
###redis##config######## #redis1服务器ip # Redis1.ip=172.30.5.113
#redis2服务器ip # Redis2.ip=172.30.5.117
#redis服务器端口号# redis.port=6379 |
修改MyJedisPool代码如下:
package com.jedis;
import java.util.LinkedList; import java.util.List; import java.util.ResourceBundle;
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool;
/** * jedis池使用 * * @author xmong */ publicclass MyJedisPool {
// jedis池 privatestatic JedisPool pool; // shardedJedis池 privatestatic ShardedJedisPool shardPool; // 静态代码初始化池配置 static { // 加载redis配置文件 ResourceBundle bundle = ResourceBundle.getBundle("redis"); if (bundle == null) { thrownew IllegalArgumentException("[redis.properties] is not found!"); } // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 config.setMaxActive(Integer.valueOf(bundle.getString("redis.pool.maxActive"))); config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle"))); config.setMaxWait(Long.valueOf(bundle.getString("redis.pool.maxWait"))); config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn")));
// 根据配置实例化jedis池 // pool = new JedisPool(config, bundle.getString("redis.ip"), // Integer.valueOf(bundle.getString("redis.port")));
// 创建多个redis共享服务 JedisShardInfo jedisShardInfo1 = new JedisShardInfo(bundle.getString("redis1.ip"), Integer.valueOf(bundle .getString("redis.port"))); JedisShardInfo jedisShardInfo2 = new JedisShardInfo(bundle.getString("redis2.ip"), Integer.valueOf(bundle .getString("redis.port")));
List<JedisShardInfo> list = new LinkedList<JedisShardInfo>(); list.add(jedisShardInfo1); list.add(jedisShardInfo2);
// 根据配置文件,创建shared池实例 shardPool = new ShardedJedisPool(config, list);
}
/** * 测试jedis池方法 */ publicstaticvoid test1() { // 从jedis池中获取一个jedis实例 Jedis jedis = pool.getResource();
// 获取jedis实例后可以对redis服务进行一系列的操作 jedis.set("name", "xmong"); System.out.println(jedis.get("name")); jedis.del("name"); System.out.println(jedis.exists("name"));
// 释放对象池,即获取jedis实例使用后要将对象还回去 pool.returnResource(jedis); }
/** * 测试shardedJedis池方法 */ publicstaticvoid test2() { // 从shard池中获取shardJedis实例 ShardedJedis shardJedis = shardPool.getResource();
// 向redis服务插入两个key-value对象 shardJedis.set("aaa", "xmong_aaa"); System.out.println(shardJedis.get("aaa")); shardJedis.set("zzz", "xmong_zzz"); System.out.println(shardJedis.get("zzz"));
// 释放资源 shardPool.returnResource(shardJedis); }
publicstaticvoid main(String[] args) { // test1();//执行test1方法 test2();// 执行test2方法 } } |
执行结果为:
xmong_aaa xmong_zzz |
可以通过下面程序访问不同的redis服务来测试结果:
package com.jedis;
import redis.clients.jedis.Jedis;
/** * 简单使用jedis * @author xmong * */ publicclass TestJedis {
//redis服务器主机 static String host = "172.30.5.113"; //端口号 staticintport = 6379;
publicstaticvoid main(String[] args) { //根据redis主机和端口号实例化Jedis对象 Jedis jedis = new Jedis(host, port); //查取key的value值,如果key不存在返回null String value1 = jedis.get("aaa"); System.out.println(value1); String value2 = jedis.get("zzz"); System.out.println(value2); } } |
执行结果为:
xmong_aaa null |
修改redis服务器
static String host = "172.30.5.117"; |
执行结果为:
null xmong_zzz |
从测试结果可以知道,ShardedJedis实现了Redis的分布存储,分别从不同的redis服务器查取结果可以得知,ShardedJedis将key为aaa的值存储到了ip为113的redis服务器上,把key为zzz的值存储到了ip为117的服务器上。
相关推荐
Jedis使用总结 前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。 本文做个总结,主要分享如下内容: 【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】 好了...
redis的Java客户端jedis使用示例.rar
Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】.docx
jedis5种数据的测试,已经写好测试代码方便拿来直接使用
jedis jar包; 版本:2.0 2.1
赠送jar包:jedis-3.6.0.jar; 赠送原API文档:jedis-3.6.0-javadoc.jar; 赠送源代码:jedis-3.6.0-sources.jar; 赠送Maven依赖信息文件:jedis-3.6.0.pom; 包含翻译后的API文档:jedis-3.6.0-javadoc-API文档-...
NULL 博文链接:https://yale.iteye.com/blog/1022186
。。。
jedis
使用redisson替代jedis中的的对应方法,以及对应的redis的命令在这三方中对应查询及操作,
最新架包jedis-3.3.0.jar下载. jedis 是 redis推荐的java客户端。通过Jedis我们可以很方便地使用java代码的...jedis使用起来比较简单,它的操作方法与redis命令相类似。对于初次使用redis的人来说,上手更快,更能适应.
Java中使用Jedis操作Redis 文档比较详细, 具体的方法都进行了介绍了, 适合新手, 和老程序员进行复习, jedis api比较乱, 特此整理.
jedis-2.9.0.jar jedis-2.9.0 jar 包,不包含源码,源码下载地址: http://download.csdn.net/download/tan3739/9993938 测试代码: 导入依赖包: commons-lang-2.5.jar commons-pool2-2.4.2.jar jedis-2.9.0 jar ...
在Springboot中已经有实现好的jar包可以很方便的集成Redis,也可以自己来封装Jedis实现Redis,这里我们使用Jedis来封装,从而使我们的程序更具有灵活性 首先,我们需要安装Redis: redis下载 安装完成之后在控制台输入...
jedis-lock, Jedis分布式锁定支持 jedis锁使用Redis数据库和Jedis驱动程序,Jedis锁易于使用和简单的分布式锁实现。我怎么用它?你可以在以下位置下载latests构建: http://github.com/abelaska/jedis-lock/dow
赠送jar包:jedis-2.9.0.jar; 赠送原API文档:jedis-2.9.0-javadoc.jar; 赠送源代码:jedis-2.9.0-sources.jar; 包含翻译后的API文档:jedis-2.9.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId...
包含 commons-pool-1.6.jar jedis.jar两个jar包,亲测可用
赠送jar包:jedis-2.8.0.jar; 赠送原API文档:jedis-2.8.0-javadoc.jar; 赠送源代码:jedis-2.8.0-sources.jar; 赠送Maven依赖信息文件:jedis-2.8.0.pom; 包含翻译后的API文档:jedis-2.8.0-javadoc-API文档-...
Redis使用lettuce和jedis
jedis依赖jar包, jedis-2.7.0.jar