<!--spring data redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--common-pool2 对象池依赖--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
redis: # 超时时间 timeout: 10000ms # 服务器地址 host: 127.0.0.1 # 服务器端口 port: 6379 database: 0 lettuce: pool: # 连接池最大连接数 默认8 ,负数表示没有限制 max-active: 1024 # 最大连接阻塞等待时间,默认-1 max-wait: 10000ms # 最大空闲连接 max-idle: 200 # 最小空闲连接 min-idle: 5
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object>redisTemplate(RedisConnectionFactory connectionFactory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
//String和HASH类型key和value序列器
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashValueSerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;
}
}
nteger adminID = ((Admin) SecurityContextHolder.getContext(). getAuthentication().getPrincipal()).getId(); ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); //从redis获取菜单数据 如果为空从数据库获取 List<Menu> menus = (List<Menu>) valueOperations.get("menu_"+adminID); if (CollectionUtils.isEmpty(menus)){ menus = menuMapper.getMenusByAdminId(adminID); //将数据设置到redis中 valueOperations.set("menu_"+adminID,menus); } return menus;
如果修改菜单时,更新增删,需要把redis清空,查询后再放入redis。
原文:https://www.cnblogs.com/timewarlock/p/15218939.html