• SpringMVC使用Redis作为缓存提供者


    (1)pom添加依赖项

     1     <dependency>
     2       <groupId>org.springframework.data</groupId>
     3       <artifactId>spring-data-redis</artifactId>
     4       <version>1.8.18.RELEASE</version>
     5     </dependency>
     6     <dependency>
     7       <groupId>org.apache.commons</groupId>
     8       <artifactId>commons-pool2</artifactId>
     9       <version>2.6.0</version>
    10     </dependency>
    11     <dependency>
    12         <groupId>redis.clients</groupId>
    13         <artifactId>jedis</artifactId>
    14         <version>2.9.0</version>
    15     </dependency>
    16     <dependency>
    17       <groupId>com.fasterxml.jackson.core</groupId>
    18       <artifactId>jackson-databind</artifactId>
    19       <version>2.9.8</version>
    20     </dependency>

    (2)设置相应的bean,添加@EnableCaching 注解启用缓存功能

     1 package cn.coreqi.config;
     2 
     3 import cn.coreqi.entities.User;
     4 import org.springframework.cache.CacheManager;
     5 import org.springframework.cache.annotation.EnableCaching;
     6 import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
     7 import org.springframework.cache.support.CompositeCacheManager;
     8 import org.springframework.context.annotation.Bean;
     9 import org.springframework.context.annotation.Configuration;
    10 import org.springframework.data.redis.cache.RedisCacheManager;
    11 import org.springframework.data.redis.connection.RedisConnectionFactory;
    12 import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
    13 import org.springframework.data.redis.core.RedisTemplate;
    14 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    15 import org.springframework.data.redis.serializer.StringRedisSerializer;
    16 
    17 import java.util.ArrayList;
    18 import java.util.List;
    19 
    20 @Configuration
    21 @EnableCaching  //启用缓存 <cache:annotation-driven />
    22 public class RedisConfig {
    23 //    @Bean
    24 //    public RedisConnectionFactory redis(){
    25 //        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    26 //        redisStandaloneConfiguration.setHostName("192.168.205.128");
    27 //        redisStandaloneConfiguration.setPort(6379);
    28 //        redisStandaloneConfiguration.setDatabase(0);
    29 //        //redisStandaloneConfiguration.setPassword(RedisPassword.of("123456"));
    30 //
    31 //        JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
    32 //        jedisClientConfiguration.connectTimeout(Duration.ofMillis(6000));//  connection timeout
    33 //
    34 //        JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration.build());
    35 //        return factory;
    36 //    }
    37 
    38     //Redis连接工厂
    39     @Bean
    40     public RedisConnectionFactory redis(){
    41         JedisConnectionFactory factory = new JedisConnectionFactory();
    42         factory.setHostName("192.168.205.128");
    43         factory.setPort(6379);
    44         return factory;
    45     }
    46 
    47     //RedisTemplate
    48     @Bean
    49     public RedisTemplate<String, User> redisTemplate(RedisConnectionFactory redis){
    50         RedisTemplate<String, User> redisTemplate = new RedisTemplate<>();
    51         redisTemplate.setConnectionFactory(redis);
    52         redisTemplate.setKeySerializer(new StringRedisSerializer());
    53         redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));
    54         return redisTemplate;
    55     }
    56 
    57 //    @Bean
    58 //    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redis){
    59 //        return new StringRedisTemplate(redis);
    60 //    }
    61 
    62     //Redis缓存管理器
    63     @Bean
    64     public CacheManager cacheManager(RedisTemplate redisTemplate){
    65         return new RedisCacheManager(redisTemplate);
    66     }
    67 
    68     //注册多个缓存管理器(迭代)
    69 //    @Bean
    70 //    public CacheManager cacheManager(RedisTemplate redisTemplate){
    71 //        CompositeCacheManager cacheManager = new CompositeCacheManager();
    72 //        List<CacheManager> managers = new ArrayList<>();
    73 //        managers.add(new ConcurrentMapCacheManager());
    74 //        managers.add(new RedisCacheManager(redisTemplate));
    75 //        cacheManager.setCacheManagers(managers);
    76 //        return cacheManager;
    77 //    }
    78 }

    (3)在dao相应的方法上添加缓存相关注解(可以在dao接口或dao实现类上添加)

    此处仅作实例代码。

     1 package cn.coreqi.dao.redis;
     2 
     3 import cn.coreqi.entities.User;
     4 import org.springframework.cache.annotation.CacheEvict;
     5 import org.springframework.cache.annotation.CachePut;
     6 import org.springframework.cache.annotation.Cacheable;
     7 import org.springframework.stereotype.Repository;
     8 
     9 import java.util.List;
    10 
    11 @Repository
    12 public class UserRedis {
    13     @Cacheable("Users")
    14     public List<User> getAll(){
    15         return null;
    16     }
    17     @Cacheable("Users")
    18     public User getById(int Id){
    19         return null;
    20     }
    21     @CachePut(value = "Users",key = "#result.Id")
    22     public User modify(User user){
    23         return null;
    24     }
    25     @CacheEvict("Users")
    26     public void delById(int Id){
    27     }
    28 }
  • 相关阅读:
    C# 杂项
    C# 数组
    我的博客第一天
    Java使用多线程异步执行批量更新操作
    Python爬取百度图片
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    python自动化办公之爬取HTML图片写入PPT实战
    理解Python闭包,这应该是最好的例子
    爬取b站《守护解放西》弹幕
    爬取b站《守护解放西》弹幕
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10279150.html
Copyright © 2020-2023  润新知