添加依賴
<!-- redis -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<!--Spring整合redis包 -->
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.1</version>
</dependency>
- SDR 1.x要求JDK 6.0及以上,要求Spring框架4.3.9.RELEASE及以上。
- Redis 2.6.x及以上。在connectors方面,Spring Redis集成了Jedis
如果不滿足要求,會因爲版本問題導致某些類加載出問題
配置redis
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<!-- 連接池基本參數配置,類似數據庫連接池 -->
<context:property-placeholder location="classpath:datasource.properties" ignore-unresolvable="true"/>
<!-- ============================ Redis ====================================== -->
<!--資源池-->
<!-- redis數據源 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 控制一個pool最多有多少個狀態爲idle(空閒)的jedis實例 -->
<property name="maxIdle" value="${redis.maxIdle}"></property>
<!-- 控制一個pool可分配多少個jedis實例 -->
<property name="maxTotal" value="${redis.maxTotal}"></property>
<!-- 表示當borrow一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException -->
<property name="maxWaitMillis" value="${redis.maxWait}"></property>
<!-- 在borrow一個jedis實例時,是否提前進行validate操作;如果爲true,則得到的jedis實例均是可用的 -->
<property name="testOnBorrow" value="${redis.testOnBorrow}"></property>
</bean>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
<property name="poolConfig" ref="jedisPoolConfig"></property>
<property name="hostName" value="${redis.host}"></property>
<property name="port" value="${redis.port}"></property>
<property name="password" value="${redis.pass}"></property>
<property name="timeout" value="${redis.timeout}"></property>
<property name="usePool" value="${redis.usePool}"></property>
</bean>
<!--redis操作模版,使用該對象可以操作redis -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >
<property name="connectionFactory" ref="jedisConnectionFactory" />
<!--如果不配置Serializer,那麼存儲的時候缺省使用String,如果用User類型存儲,那麼會提示錯誤User can't cast to String!! -->
<property name="keySerializer" >
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="valueSerializer" >
<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<property name="hashValueSerializer">
<bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>
</property>
<!--開啓事務 -->
<property name="enableTransactionSupport" value="true"></property>
</bean >
<bean id="RedisTemplateUtil" class="cn.coolservice.oa.utils.RedisTemplateUtil">
<property name="redisTemplate" ref="redisTemplate"/>
</bean>
<!-- 下面這個是整合Mybatis的二級緩存使用的 -->
<!--<bean id="redisCacheTransfer" class="cn.qlq.jedis.RedisCacheTransfer">-->
<!--<property name="jedisConnectionFactory" ref="jedisConnectionFactory" />-->
<!--</bean>-->
<!--Redis和緩存配置結束 -->
</beans>
創建一個redistemplate工具
package cn.coolservice.oa.utils;
/**
* @Author: 樊小銘
* Date: 2020/2/12 14:43
* @Version:
* @Description: 工具來源:http://www.jeepxie.net/article/6360.html
*/
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
public class RedisTemplateUtil {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public void set(String key, Object value) {
ValueOperations<String, Object> valueOperations = redisTemplate
.opsForValue();
valueOperations.set(key, value);
}
public Object get(String key) {
return redisTemplate.opsForValue().get(key);
}
public void setList(String key, List<?> value) {
ListOperations<String, Object> listOperations = redisTemplate
.opsForList();
listOperations.leftPush(key, value);
}
public Object getList(String key) {
return redisTemplate.opsForList().leftPop(key);
}
public void setSet(String key, Set<?> value) {
SetOperations<String, Object> setOperations = redisTemplate.opsForSet();
setOperations.add(key, value);
}
public Object getSet(String key) {
return redisTemplate.opsForSet().members(key);
}
public void setHash(String key, Map<String, ?> value) {
HashOperations<String, Object, Object> hashOperations = redisTemplate
.opsForHash();
hashOperations.putAll(key, value);
}
public Object getHash(String key) {
return redisTemplate.opsForHash().entries(key);
}
public void delete(String key) {
redisTemplate.delete(key);
}
public void setRedisTemplate(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
public RedisTemplate getRedisTemplate() {
return redisTemplate;
}
}