Redis的使用总结一

1. Jedis

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

 

推荐添加到服务层。工程中。

 

1.1. 连接单机版

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

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

第三步:打印结果。

第四步:关闭Jedis

@Test

public void testJedis() throws Exception {

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

Jedis jedis = new Jedis("192.168.25.153", 6379);

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

String result = jedis.get("hello");

// 第三步:打印结果。

System.out.println(result);

// 第四步:关闭Jedis

jedis.close();

}

 

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

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

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

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

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

第五步:关闭JedisPool对象。

@Test

public void testJedisPool() throws Exception {

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

JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);

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

Jedis jedis = jedisPool.getResource();

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

jedis.set("jedis", "test");

String result = jedis.get("jedis");

System.out.println(result);

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

jedis.close();

// 第五步:关闭JedisPool对象。

jedisPool.close();

}

Redis工具类

package com.lingwo.common.jedis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
 * Redis 数据库连接池
 * <p>Title: JedisPool</p>
 * <p>Description: </p>
 * <p>Company: www.lingwo.com</p> 
 * @version 1.0
 * @author 徐**
 * @date 2018年4月16日 下午6:31:16
 */
public class RedisPool {
private static JedisPool jedisPool;
static{
initRedis();
}
/**
* 初始化连接池对象
* <p>Title: initRedsi</p>
* <p>Description: </p>
*/
private static void initRedis(){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(10);//最大连接数
poolConfig.setMaxIdle(10);//最大空闲数
poolConfig.setMinIdle(2);//最小空闲数
poolConfig.setTestOnBorrow(true);//是否需要检查每个借出的连接是否可用,设置true后可保证,每个借到的连接都是可用
poolConfig.setTestOnReturn(false);//是否需要检查每个归还的连接是否可用,设置true后可保证,每个归还的连接都是可用
jedisPool = new JedisPool(poolConfig, "192.168.25.128", 6379, 1000*2);
}

/**

* @author cos
* @return
* @version 1.0v 
* 创建时间:2018年4月16日 上午9:59:43  
* @Description:对外提供的获取连接的方法
*/
public static Jedis getResource() {
return jedisPool.getResource();
}
}
package com.lingwo.common.utils;
import java.util.List;
import com.lingwo.common.jedis.RedisPool;
import redis.clients.jedis.Jedis;
/**
 * Redis数据库连接使用工具类
 * <p>Title: RedisUtils</p>
 * <p>Description: </p>
 * <p>Company: www.lingwo.com</p> 
 * @version 1.0
 * @author 徐**
 * @date 2018年4月16日 下午6:51:02
 */
public class RedisUtils {
/**
* 添加数据到redis数据库
* <p>Title: set</p>
* <p>Description: </p>
* @param key
* @param value
* @return
*/
public static String set(String key, String value) {
Jedis jedis = RedisPool.getResource();
String result = jedis.set(key, value);
jedis.close();
return result;
}

/**
* 从redis数据库获取值
* <p>Title: set</p>
* <p>Description: </p>
* @param key
* @param value
* @return
*/
public static String get(String key) {
Jedis jedis = RedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}

public static Boolean exists(String key) {
Jedis jedis = RedisPool.getResource();
Boolean result = jedis.exists(key);
jedis.close();
return result;
}

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

public static Long ttl(String key) {
Jedis jedis = RedisPool.getResource();
Long result = jedis.ttl(key);
jedis.close();
return result;
}

public static Long incr(String key) {
Jedis jedis = RedisPool.getResource();
Long result = jedis.incr(key);
jedis.close();
return result;
}

public static Long hset(String key, String field, String value) {
Jedis jedis = RedisPool.getResource();
Long result = jedis.hset(key, field, value);
jedis.close();
return result;
}

public static String hget(String key, String field) {
Jedis jedis = RedisPool.getResource();
String result = jedis.hget(key, field);
jedis.close();
return result;
}

public static Long hdel(String key, String... field) {
Jedis jedis = RedisPool.getResource();
Long result = jedis.hdel(key, field);
jedis.close();
return result;
}

public static Boolean hexists(String key, String field) {
Jedis jedis = RedisPool.getResource();
Boolean result = jedis.hexists(key, field);
jedis.close();
return result;
}

public static List<String> hvals(String key) {
Jedis jedis = RedisPool.getResource();
List<String> result = jedis.hvals(key);
jedis.close();
return result;
}

public static Long del(String key) {
Jedis jedis = RedisPool.getResource();
Long result = jedis.del(key);
jedis.close();
return result;
}
}


策略模式在Redis单机和集群件切换

创建接口JedisClient.java

package com.tt.jedis;


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);
}
单机Redis实现类

package com.tt.jedis;


import org.springframework.beans.factory.annotation.Autowired;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;


public class JedisClientPool implements JedisClient {

@Autowired
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();
Long result = jedis.incr(key);
jedis.close();
return result;
}


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


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


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


}

集群版Redis实现类

package com.tt.jedis;


import org.springframework.beans.factory.annotation.Autowired;


import redis.clients.jedis.JedisCluster;


public class JedisClientCluster implements JedisClient {

@Autowired
private JedisCluster jedisCluster;


@Override
public String set(String key, String value) {
return jedisCluster.set(key, value);
}


@Override
public String get(String key) {
return jedisCluster.get(key);
}


@Override
public Boolean exists(String key) {
return jedisCluster.exists(key);
}


@Override
public Long expire(String key, int seconds) {
return jedisCluster.expire(key, seconds);
}


@Override
public Long ttl(String key) {
return jedisCluster.ttl(key);
}


@Override
public Long incr(String key) {
return jedisCluster.incr(key);
}


@Override
public Long hset(String key, String field, String value) {
return jedisCluster.hset(key, field, value);
}


@Override
public String hget(String key, String field) {
return jedisCluster.hget(key, field);
}


@Override
public Long hdel(String key, String... field) {
return jedisCluster.hdel(key, field);
}


}

创建applicationContext-redis.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">


<!--Redis单机版  -->
<bean id="jedisClientPool" class="cn.e3mall.common.jedis.JedisClientPool">
<property name="jedisPool" ref="jedisPool"></property>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="6379"></constructor-arg>
</bean>

<!-- redis集群 -->
<!-- <bean id="jedisClientCluster" class="cn.e3mall.common.jedis.JedisClientCluster">
<property name="jedisCluster" ref="jedisCluster"></property>
</bean>
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7001"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7002"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7003"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7004"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7005"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.25.128"></constructor-arg>
<constructor-arg name="port" value="7006"></constructor-arg>
</bean>
</set>
</constructor-arg>
</bean> -->
</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值