1、引入jar,pom配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、Redis配置,application.yml
#redis
redis:
host: 127.0.0.1
port: 6379
password:
database: 1
timeout: 10000 # 连接超时时间(毫秒)
lettuce:
pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)默认 8
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1
max-idle: 8 # 连接池中的最大空闲连接默认 8
min-idle: 0 # 连接池中的最小空闲连接默认 0
3.RedisConfig配置
package com.deploy.config;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import javax.annotation.Resource;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
/**
* Redis缓存配置类
* @author xuc
*
*/
@Configuration
@EnableCaching
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {
public RedisConfig() {
System.out.println("RedisConfig容器启动初始化。。。");
}
@Resource
private LettuceConnectionFactory lettuceConnectionFactory;
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuffer sb = new StringBuffer();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
// 缓存管理器
@Bean
public CacheManager cacheManager() {
RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(lettuceConnectionFactory);
@SuppressWarnings("serial")
Set<String> cacheNames = new HashSet<String>() {
{
add("codeNameCache");
}
};
builder.initialCacheNames(cacheNames);
return builder.build();
}
@Bean
public RedisTemplate<String,Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory){
RedisTemplate<String,Serializable> template = new RedisTemplate<String,Serializable>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());// Hash key序列化
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());// Hash value序列化
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
4、RedisTemplate 使用
@Autowired
private RedisTemplate<String, Serializable> redisCacheTemplate;
@RequestMapping("test")
public Map test(){
Map<String,Object> result = new HashMap<>();
result.put("code", "000000");
result.put("msg", "success");
User u = new User();
u.setId("123");
u.setState(23);
u.setUser_photo("huangjinjin");
u.setPosition("cto");
result.put("body", u);
redisCacheTemplate.opsForValue().set(String.valueOf(u.getId()), u);
redisCacheTemplate.opsForValue().set("code",123412);
Serializable code = redisCacheTemplate.opsForValue().get("code");
return successList(result);
}
5、RedisTemplate 主要API
RedisTemplate中定义了对5种数据结构操作
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
API参考连接
网友评论