1、引入坐标:
1)gradle
compile(
// redis
'redis.clients:jedis:2.9.0',
'org.springframework.data:spring-data-redis:1.7.5.RELEASE'
)
2)spring中maven坐标
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.5.RELEASE</version>
</dependency>
3)spring boot 中maven 坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
需要在application.properties中指定redis的地址:
spring.redis.host=192.168.0.115
2、设置properties文件存储reids信息,spring boot 只需要上面3)中设置即可
redis.ip = 192.168.0.115
redis.port = 6379
redis.pool.maxIdle = 200
redis.pool.maxTotal = 1024
redis.pool.testOnBorrow = true
redis.pool.maxWait = 1000
3、spring 和 gradle中的配置
<!-- 创建redis连接池 -->
<bean name="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" >
<property name="maxIdle" value="${redis.pool.maxIdle}" />
<property name="maxTotal" value="${redis.pool.maxTotal}" />
<property name="maxWaitMillis" value="${redis.pool.maxWait}" />
<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
</bean>
<!-- redis连接工厂 -->
<bean name="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="poolConfig" ref="jedisPoolConfig"></property>
<property name="hostName" value="${redis.ip}"></property>
<property name="port" value="${redis.port}"></property>
</bean>
<!-- spring提供的模板对象 -->
<bean name="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"></property>
</bean>
4、使用:封装redis的工具类
package cn.j0.app.shuoba.redis;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* FileName: StringDateRedisUtils
* Author:
* Date: 2019/7/29 11:18
* Description: redis工具类
*/
@Service
public class StringDateRedisUtils {
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* 设置reids值
*
* @param hashKey 大key
* @param key 小key
* @param seconds 缓存的秒值
* @param value 要缓存的值
* @param <T>
* @return
*/
public <T> boolean setHashValue(String hashKey, String key, int seconds, T value) {
try {
String strValue = RedisService.beanToString( value );
if (strValue == null || strValue.length() <= 0) {
return false;
}
stringRedisTemplate.boundHashOps( hashKey ).put( key, strValue );
if (seconds > 0) {
stringRedisTemplate.expire( hashKey, seconds, TimeUnit.SECONDS );
}
return true;
} catch (Exception ex) {
return false;
}
}
/**
* 获取值
* @param hashKey
* @param key
* @return
*/
public List<T> getHashRedisList(String hashKey, String key, Class<T> clazz){
try{
List<T> list = new ArrayList();
Object object = stringRedisTemplate.boundHashOps( hashKey).get( key );
List objectlist = JSON.parseObject( object.toString(), List.class );
for (Object obj : objectlist) {
T vo = JSON.parseObject( obj.toString(), clazz );
list.add( vo ) ;
}
return list;
}catch (Exception e){
return null;
}
}
/**
* 获取值
* @param hashKey
* @param key
* @return Object
*/
public Object getHashRedisList(String hashKey, String key){
try{
return stringRedisTemplate.boundHashOps( hashKey).get( key );
}catch (Exception e){
return null;
}
}
/**
* 删除
*/
public boolean deleteHashRedis(String hashKey, String key) {
try {
if(StringUtils.isNotEmpty(key)){
stringRedisTemplate.boundHashOps( hashKey ).delete( key );
}else{
stringRedisTemplate.delete( hashKey );
}
return true;
} catch (Exception e){
return false;
}
}
}
模板对象提供了两种操作redis的模式
一种是opsForXXX方式获取Operations对象,通过对象再来操作
另一种是boundHashOps(XXX)直接获取指定key的redis数据对象,进行操作