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搜索一下官网。

下一节客户端管理。

posted @ 2021-08-22 12:17  敖毛毛  阅读(146)  评论(0编辑  收藏  举报