需要把jedis依赖的jar包添加到工程中。Maven工程中需要把jedis的坐标添加到依赖。

 

推荐添加到服务层。happygo-content-Service工程中。

 

1.1. 连接单机版

第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

第三步:打印结果。

第四步:关闭Jedis

 

    @Test
public void testSetGet() {
//1.创建jedis对象,参数IP,Port
Jedis jedis = new Jedis("192.168.25.129", 6379);
//2.插入字符串
jedis.set("sex", "男");
//3.取出字符串
String sex = jedis.get("sex");
System.out.println(sex);
//4.关闭连接
jedis.close();
}

 

1.2. 连接单机版使用连接池

第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。

第二步:从JedisPool中获得Jedis对象。

第三步:使用Jedis操作redis服务器。

第四步:操作完毕后关闭jedis对象,连接池回收资源。

第五步:关闭JedisPool对象。

 


@Test
public void testPool() {
//1.获得连接池
JedisPool jedisPool = new JedisPool("192.168.25.129", 6379);
//2.获得连接
Jedis jedis = jedisPool.getResource();
//3.操作
String sex = jedis.get("sex");
System.out.println(sex);
//4.关闭连接
jedis.close();
//5.关闭连接池
jedisPool.close();
}

 

1.3. 连接集群版

第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。

第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

第三步:打印结果

第四步:系统关闭前,关闭JedisCluster对象。

 


@Test
public void testJedisCluster() throws Exception {
// 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。        
Set<HostAndPort> nodes = new HashSet<>();              
nodes.add(new HostAndPort("192.168.25.129", 7001));              
nodes.add(new HostAndPort("192.168.25.129", 7002));              
nodes.add(new HostAndPort("192.168.25.129", 7003));              
nodes.add(new HostAndPort("192.168.25.129", 7004));              
nodes.add(new HostAndPort("192.168.25.129", 7005));              
nodes.add(new HostAndPort("192.168.25.129", 7006));              
JedisCluster jedisCluster = new JedisCluster(nodes);              
// 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。              
jedisCluster.set("hello", "100");              
String result = jedisCluster.get("hello");              
// 第三步:打印结果              
System.out.println(result);              
// 第四步:系统关闭前,关闭JedisCluster对象。              
jedisCluster.close();
}

 

2. 向业务逻辑中添加缓存

2.1. 接口封装

常用的操作redis的方法提取出一个接口,分别对应单机版和集群版创建两个实现类。

 

2.1.1. 接口定义

 

public interface JedisClient {

String set(String key, String value);
String get(String key);
Boolean exists(String key);
Long expire(String key, int seconds);
Long ttl(String key);
Long incr(String key);
Long hset(String key, String field, String value);
String hget(String key, String field);
Long hdel(String key, String... field);
}

 

2.1.2. 单机版实现类


public class JedisClientPool implements JedisClient {

private JedisPool jedisPool;

@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key, value);
jedis.close();
return result;
}

@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}

@Override
public Boolean exists(String key) {
Jedis jedis = jedisPool.getResource();
Boolean result = jedis.exists(key);
jedis.close();
return result;
}

@Override
public Long expire(String key, int seconds) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.expire(key, seconds);
jedis.close();
return result;
}

@Override
public Long ttl(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.ttl(key);
jedis.close();
return result;
}

@Override
public Long incr(String key) {
Jedis jedis = jedisPool.getResource();

相关文章: