先导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.3</version>
</dependency>
redis的xml配置文件 ,放spring配置文件里也行,但是还是单独写一个比较好,一个单击版的一个集群版的
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--将redis对象交给spring容器管理-->
<!--注册单机版的reids,创建jedisPool,需要通过构造方法注入pool和host-->
<!--连接redis的单机版-->
<!--注册单机版的实现类-->
<bean id="jedisClientPool" class="com.bgs.redis.impl.JedisClientPool">
<property name="jedisPool" ref="jedisPool"></property>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="192.168.44.9"></constructor-arg>
<constructor-arg name="port" value="6379"></constructor-arg>
</bean>
<!--
<bean id="jedisClientCluster" class="com.buba.party.redis.impl.JedisClientCluster">
<property name="jedisCluster" ref="jedisCluster"/>
</bean>
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg>
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7001"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7002"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7003"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7004"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7005"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.44.9"/>
<constructor-arg name="port" value="7006"/>
</bean>
</set>
</constructor-arg>
</bean>-->
</beans>
连接池类和接口,这里面的方法可以自己扩展,根据需要自己添加就行
package com.bgs.redis; //这个是注入时的接口
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);
}
package com.bgs.redis.impl; //这个是单击版的实现类
import com.bgs.redis.JedisClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import javax.annotation.Resource;
public class JedisClientPool implements JedisClient {
@Resource
private JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.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;
}
}
package com.bgs.redis.impl; //这个是集群版的实现类
import com.bgs.redis.JedisClient;
import redis.clients.jedis.JedisCluster;
import javax.annotation.Resource;
public class JedisClientCluster implements JedisClient {
@Resource
private JedisCluster jedisCluster;
public JedisCluster getJedisCluster() {
return jedisCluster;
}
public void setJedisCluster(JedisCluster jedisCluster) {
this.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);
}
}
使用过程,我这个案例是查询省级联动信息,都是以json串形式存取的,不是固定的看你们需求
package com.bgs.serviceimpl;
import com.alibaba.fastjson.JSONObject;
import com.bgs.mapper.HatAreaMapper;
import com.bgs.mapper.HatCityMapper;
import com.bgs.mapper.HatProvinceMapper;
import com.bgs.pojo.HatArea;
import com.bgs.pojo.HatCity;
import com.bgs.pojo.HatProvince;
import com.bgs.redis.JedisClient;
import com.bgs.redis.impl.JedisClientPool;
import com.bgs.service.ProvinceService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ProvinceServiceImpl implements ProvinceService {
@Autowired
private HatProvinceMapper hatProvinceMapper;
@Autowired
private HatCityMapper hatCityMapper;
@Autowired
private HatAreaMapper hatAreaMapper;
@Autowired
private JedisClient jedisClient;
@Override
public List<HatProvince> findAllProvince() {
String province = jedisClient.get("province"); //判断redis中有没有该key
List<HatProvince> allProvince = null;
if(StringUtils.isNotBlank(province)){ //如果有就取出来转换成存的时候的list集合
allProvince = JSONObject.parseArray(province, HatProvince.class);
return allProvince;
}
allProvince = hatProvinceMapper.findAllProvince(); //如果没有的话从数据库取出来存入redis当中
String s = JSONObject.toJSONString(allProvince);
jedisClient.set("province",s);
return allProvince;
}
@Override
public List<HatArea> findAllArea(String area) {
List<HatArea> allArea = null;
String area1 = jedisClient.hget("area", area);
// String s = jedisClient.get(area);
if(StringUtils.isNotBlank(area1)){
allArea = JSONObject.parseArray(area1, HatArea.class);
return allArea;
}
allArea = hatAreaMapper.findAllArea(area);
//jedisClient.set(area,JSONObject.toJSONString(allArea));
jedisClient.hset("area",area,JSONObject.toJSONString(allArea)); //这个存取方式是以hash的方式存取的
return allArea;
}
@Override
public List<HatCity> findAllCity(String province) {
List<HatCity> allCity =null;
//String s = jedisClient.get(province);
String city = jedisClient.hget("city", province);
if(StringUtils.isNotBlank(city)){
allCity = JSONObject.parseArray(city, HatCity.class);
return allCity;
}
allCity = hatCityMapper.findAllCity(province);
//jedisClient.set(province,JSONObject.toJSONString(allCity));
jedisClient.hset("city",province,JSONObject.toJSONString(allCity));
return allCity;
}
}