zoukankan      html  css  js  c++  java
  • springboot结合redis做缓存

    1.引入依赖

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.6.2</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>2.1.3.RELEASE</version>
    </dependency>

    2.业务层添加注解

    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserMapper userMapper;
    
        public void setUserMapper(UserMapper userMapper) {
            this.userMapper = userMapper;
        }
    
        @Override
    //    @BaiZhiCacheable("users")
        //缓存名:users 数据的key=方法名
        @Cacheable(value="users",key="#root.methodName")
        public List<User> showAllUsers() {
            System.out.println("查询数据库");
            return userMapper.selectAllUsers();
        }
    
        @Override
    //    @BaiZhiCacheable("users")
        //缓存名:users 数据的key=方法名+id参数值
        @Cacheable(value="users",key="#root.methodName+#id")
        public User showUser(Integer id) {
            System.out.println("查询数据库");
            return userMapper.selectUserById(id);
        }
    
        @Override
    //    @BaiZhiCacheEvict("users")
        //缓存名:users 删除全部数据,在方法执行后执行缓存删除
        @CacheEvict(value="users",allEntries = true,beforeInvocation = false)
        public void removeUser(Integer id) {
            System.out.println("删除数据库");
            userMapper.deleteUserById(id);
        }
    }

    3.application.yml

    spring:
      redis:
        lettuce:
          pool:
            max-active: 500
            max-idle: 50
            min-idle: 10
            max-wait: 30000
        host: 192.168.146.20
        port: 6379

    4.入口类(注意注解不要少)

    @SpringBootApplication
    @MapperScan("com.baizhi.mapper")
    @EnableCaching
    //@EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了
    public class SpringBootRedisApplication { public static void main(String[] args) { SpringApplication.run(SpringBootRedisApplication.class,args); } //配置缓存管理器 @Bean public CacheManager cacheManager(RedisConnectionFactory connectionFactory){ RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory); return new RedisCacheManager(redisCacheWriter,getRedisCacheConfiguration(20), getRedisCacheConfigurationMap()); } private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap(){ Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>(); redisCacheConfigurationMap.put("users", getRedisCacheConfiguration(100)); redisCacheConfigurationMap.put("books", getRedisCacheConfiguration(60)); return redisCacheConfigurationMap; } //RedisCacheConfiguration 用于负责Redis的缓存配置 private RedisCacheConfiguration getRedisCacheConfiguration(int seconds){ RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig(); GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); return redisCacheConfiguration .serializeValuesWith( RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer) ) .entryTtl(Duration.ofSeconds(seconds)); } }
    以粮为纲全面发展
  • 相关阅读:
    第二次作业
    大学——新生活方式
    第四次作业
    第三次作业
    第二次作业——起航
    梦开始的地方
    第四次作业
    第三次作业
    第二次作业
    博客作业 随笔
  • 原文地址:https://www.cnblogs.com/alexliuf/p/13966723.html
Copyright © 2011-2022 走看看