SpringBoot中使用Redis集成项目菜单功能

后台管理系统的菜单不经常变化,但需要频繁读取和渲染,所以可以将菜单放在Redis里面去加快读取速度。

1.在pom中添加redis依赖

<!--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>

2.在yml中进行简单的配置

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

 3.设置序列化,在配置类中新建RedisConfig配置类

@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;
}
}

4.在服务实现类中设置redis,从redis获取菜单数据 如果为空从数据库获取

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。

SpringBoot中使用Redis集成项目菜单功能

上一篇:ios7内购、Game Center 实现 in-App Purchases & Game Center


下一篇:mac 上配置 maven