文章目录
一、背景
- 通过前面一系列文章,我们仅仅了解了Redis缓存服务的安装及相应配置,而往往在实际的项目编程中是需要一定的客户端来操作Redis的。
- Jedis是一个非常小而灵巧且易于使用的Redis Java客户端。Jedis GitHub地址
- 本篇文章将通过Java Maven项目介绍Jedis的一些基本操作。
二、连接配置
- 首先创建一个Java Maven项目,通过maven引入Jedis的依赖包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.5.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
- 编写一个简单的测试类,进行连接测试
/**
* 简单测试Jedis
* @author zhuhuix
*/
public class TestJedis {
@Test
public void testJedis(){
// 创建jedis对象
Jedis jedis=new Jedis("127.0.0.1",6379);
// 创建键值对
jedis.set("key", "jedis");
String string=jedis.get("key");
System.out.println(string);
// 关闭jedis
jedis.close();
}
}
三、Jedis工具类
- 为了实现代码封装与重用,我们需要编写统一的工具类
/**
* Jedis工具类
*
* @author zhuhuix
*/
public class JedisUtil {
private static Jedis jedis;
// 初始化
private static void init() {
try {
Resource resource = new ClassPathResource("application.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
String host = props.getProperty("redis.host");
int port = Integer.parseInt(props.getProperty("redis.port"));
String password = props.getProperty("redis.password");
jedis = new Jedis(host, port);
if (!StringUtils.isEmpty(password)) {
jedis.auth(password);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public JedisUtil() {
if (jedis == null) {
init();
}
}
// 返回单例
private static Jedis getJedis() {
return jedis;
}
// 设定键值对
public String set(String key, String value) {
return getJedis().set(key, value);
}
// 获取指定key的值
public String get(String key) {
return getJedis().get(key);
}
// 删除键值,键可以是数组
public Long del(String... keys) {
return getJedis().del(keys);
}
// 设置单对hash键值
public Long hset(String key, String field, String value) {
return getJedis().hset(key, field, value);
}
// 根据键获取hash值
public String hget(String key, String field) {
return getJedis().hget(key, field);
}
// 设置多对hash键值
public String hmset(String key, Map<String, String> hash) {
return getJedis().hmset(key, hash);
}
// 根据键数组获取多对值
public List<String> hmget(String key, String... fields) {
return getJedis().hmget(key, fields);
}
// 对键设置过期时间
public Long expire(String key, int seconds) {
return getJedis().expire(key, seconds);
}
// 删除hash键值,可以为多组
public Long hdel(String key, String... fields) {
return getJedis().hdel(key, fields);
}
...
}
- 编写测试类对工具类进行测试
/**
* 测试Jedis工具类
* @author zhuhuix
*/
public class TestJedisUtil {
@Test
public void test(){
JedisUtil jedisUtil = new JedisUtil();
jedisUtil.set("key","redis");
System.out.println(jedisUtil.get("key"));
jedisUtil.hset("001","name","张三");
jedisUtil.hset("001","age","16");
System.out.println(jedisUtil.hget("001","name"));
System.out.println(jedisUtil.hget("001","age"));
jedisUtil.expire("key",100);
jedisUtil.expire("001",200);
}
}
- 测试结果