redis 简单整理——java 客户端jedis[十六]
前言
简单介绍一下java客户端jedis。
正文
Java有很多优秀的Redis客户端(详见:http://redis.io/clients#java),这 里介绍使用较为广泛的客户端Jedis,本节将按照以下几个方面对Jedis进行 介绍:
·Jedis的基本使用
·Jedis连接池使用
·Jedis中Pipeline使用
·Jedis的Lua脚本使用
Jedis属于Java的第三方开发包,在Java中获取第三方开发包通常有两种
方式:
·直接下载目标版本的Jedis-${version}.jar包加入到项目中。
·使用集成构建工具,例如maven、gradle等将Jedis目标版本的配置加入 到项目中。
通常在实际项目中使用第二种方式,但如果只是想测试一下Jedis,第 一种方法也是可以的。在写本书时,Jedis最新发布的稳定版本2.8.2,以 Maven为例子,在项目中加入下面的依赖即可:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.2</version>
</dependency>
然后编写代码:
public static void main(String[] args) {
//1. 生成一个Jedis对象,这个对象负责和指定Redis实例进行通信
Jedis jedis = new Jedis("127.0.0.1", 6379);
// 2. jedis执行set操作
jedis.set("hello", "world");
// 3. jedis执行get操作, value="world"
String value = jedis.get("hello");
System.out.println(value);
}
一般时候如果是网络异常,那么应该try catch 这种模式。
Jedis jedis = null; try {jedis = new Jedis("127.0.0.1", 6379); jedis.get("hello"); } catch (Exception e) { logger.error(e.getMessage(),e); } finally { if (jedis != null) { jedis.close(); } }
有些客户端自带了系列化工具,有些客户端没有,jedic就没有,那么需要自我找个库进行解读。
使用protostuff:
可以自我实现一下反序列化,自己百度官网。
上面我们看到一个问题就是redis 使用后,然后马上关闭了,如果redis是高频操作的话,那么是很危险的。
因此生产环境中一般使用连接池的方式对Jedis连接进行管理,所有Jedis对象预先放在池子中(JedisPool),每次要连接Redis,只 需要在池子中借,用完了在归还给池子.
另外直连的方式无法限制Jedis 对象的个数,在极端情况下可能会造成连接泄露,而连接池的形式可以有效 的保护和控制资源的使用。
Jedis提供了JedisPool这个类作为对Jedis的连接池,同时使用了Apache的 通用对象池工具common-pool作为资源的管理工具,下面是使用JedisPool操 作Redis的代码示例:
pipline 例子:
其他的如Lua脚本可以jedis搜索一下官网。
结
下一节客户端管理。