Springboot + 整合redis 基于注解使用

首先说明,样例的项目全做的查询操作,所以没有去介绍其他的几个注解

首先引入springboot 整合redis的jar包依赖

       <!-- 把springboot版本说明-->
		<parent>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-parent</artifactId>
	        <version>2.2.1.RELEASE</version>
	        <relativePath/> <!-- lookup parent from repository -->
   		 </parent>
   		 <!--这个才是主角-->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

其次 上配置文件

spring:
	redis:
		host: 127.0.0.1
	    database: 0
	    port: 6383
	    password: xxxxx
	    # 连接超时时间(毫秒)
	    timeout: 5000
	    jedis:
	      pool:
	        # 连接池最大连接数(使用负值表示没有限制)
	        max-active: 10
	        # 连接池最大阻塞等待时间(使用负值表示没有限制)
	        max-wait: -1
	        # 连接池中的最大空闲连接
	        max-idle: 5
	        # 连接池中的最小空闲连接
	        min-idle: 0
	

接着,上配置类

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class);
    @Bean
    public RedisCacheConfiguration redisCacheConfiguration(){
        return RedisCacheConfiguration
                .defaultCacheConfig()
                .entryTtl(Duration.ofHours(8))
                .serializeKeysWith(RedisSerializationContext
                                   .SerializationPair
                                   .fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(RedisSerializationContext
                                   .SerializationPair
                                   .fromSerializer(new GenericJackson2JsonRedisSerializer()));
    }


    @Override
    @Bean
    public CacheErrorHandler errorHandler() {
        // 异常处理,当Redis发生异常时,打印日志,但是程序正常走
        logger.info("初始化 -> [{}]", "Redis CacheErrorHandler");
        return new CacheErrorHandler() {
            @Override
            public void handleCacheGetError(RuntimeException e, Cache cache, Object key) {
                logger.error("Redis occur handleCacheGetError:key -> [{}]", key, e);
            }

            @Override
            public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) {
                logger.error("Redis occur handleCachePutError:key -> [{}];value -> [{}]", key, value, e);
            }

            @Override
            public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) {
                logger.error("Redis occur handleCacheEvictError:key -> [{}]", key, e);
            }

            @Override
            public void handleCacheClearError(RuntimeException e, Cache cache) {
                logger.error("Redis occur handleCacheClearError:", e);
            }
        };
    }
}

这里上面注释了@Configuration,需要被@SpringBootApplication注解扫到,不然这个配置就等于没作用,至于怎么让它被扫描到,可以把这个配置文件放到低于Application启动类低一个level的package里面
eg
|-- src/main/java/com.xxx.xx/config/RedisConfig.java
|-- src/main/java/com.xxx.xx/Application.java

四部曲已经到了最后一步,那就是使用举例

@Service
@CacheConfig(cacheNames = {"base-info"}) //这个是对每个类都有一个分层
public class BaseInfoServiceImpl implements IBaseInfoService {
	
	// 这里全部都是查询,所以使用了@Cachable注解,至于用于更新和删除的注解可以自行百度,很简单
	@Override
    @Cacheable(key = "targetClass + methodName")
    public xxxDTO getDto() {
		return xxx;
	}
}

最后,当然是看效果这里推荐使用Redis Desktop Mananger 看效果
在这里插入图片描述
如果觉得JSON形式的序列化和反序列化效率低,想使用二进制的,可以使用Kryo序列化方式,只需要上面的RedisConfig中

.serializeValuesWith(RedisSerializationContext
                                   .SerializationPair
                                   .fromSerializer(new GenericJackson2JsonRedisSerializer()));
// 修改new GenericJackson2JsonRedisSerializer()  替换为其他的
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot中,你可以通过注解来方便地使用Redis。首先,确保你的Spring Boot应用程序中已经添加了Redis的依赖。 接下来,你可以使用`@EnableCaching`注解来开启缓存功能,并且指定使用Redis作为缓存管理器。在你的Spring Boot应用程序的主类上添加如下注解: ```java @EnableCaching @SpringBootApplication public class YourApplication { // ... } ``` 然后,你可以在需要使用缓存的方法上添加`@Cacheable`、`@CachePut`、`@CacheEvict`等注解来指定缓存的行为。 - `@Cacheable`:将方法结果缓存起来。在下次相同参数调用时,将直接从缓存中获取结果,而不执行方法体。 - `@CachePut`:将方法结果更新到缓存中。每次方法被调用时,都会执行方法体,并将结果缓存起来。 - `@CacheEvict`:从缓存中删除指定的缓存条目。 以下是一个示例: ```java @Service public class YourService { @Autowired private YourRepository repository; @Cacheable("yourCacheName") public List<YourObject> getCachedData(String key) { return repository.getData(key); } @CachePut("yourCacheName") public List<YourObject> updateCachedData(String key) { return repository.getData(key); } @CacheEvict("yourCacheName") public void clearCache(String key) { // 缓存清除后,方法体会被执行 } } ``` 在上述示例中,`@Cacheable("yourCacheName")`表示将方法的返回结果缓存起来,并指定缓存名为"yourCacheName",方法参数作为缓存的键值。`@CachePut("yourCacheName")`表示每次方法调用都会执行方法体,并将结果更新到缓存中。`@CacheEvict("yourCacheName")`表示从缓存中删除指定的缓存条目。 在配置文件中,你还需要配置Redis的连接信息。可以在application.properties或application.yml文件中添加以下配置: ```properties spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=yourpassword (如果有密码的话) ``` 通过以上步骤,你就可以在Spring Boot应用程序中方便地使用Redis进行缓存了。注意,你需要确保已经正确安装和启动了Redis服务器。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值