开发者社区> 技术小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

springboot整合redis

简介:
+关注继续查看

springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring支持的注解进行访问缓存 。

》准备工作

pom.xml文件:

<dependency>

            <groupId>redis.clients</groupId>

            <artifactId>jedis</artifactId>

            <version>2.7.3</version>

     </dependency>

     <dependency>

            <groupId>org.springframework.data</groupId>

            <artifactId>spring-data-redis</artifactId>

            <version>1.7.2.RELEASE</version>

     </dependency>

     <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-redis</artifactId>

            <version>RELEASE</version>

     </dependency>    

application.properties配置文件:

# REDIS (RedisProperties)

# Redis数据库索引(默认为0)

spring.redis.database=0

# Redis服务器地址

spring.redis.host=127.0.0.1

# Redis服务器连接端口

spring.redis.port=6379

# 连接池最大连接数(使用负值表示没有限制)

spring.redis.pool.max-active=8

# 连接池最大阻塞等待时间(使用负值表示没有限制)

spring.redis.pool.max-wait=-1

# 连接池中的最大空闲连接

spring.redis.pool.max-idle=8

# 连接池中的最小空闲连接

spring.redis.pool.min-idle=0

# 连接超时时间(毫秒)

spring.redis.timeout=0

Redis配置类

/**

 * @author hulonghai

 * redis配置类

 */

@Configuration

@EnableCaching

public class CacheConfig extends CachingConfigurerSupport{


    @SuppressWarnings("rawtypes")

    @Bean

    public CacheManager cacheManager(RedisTemplate redisTemplate) {

        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);

        // 多个缓存的名称,目前只定义了一个

        rcm.setCacheNames(Arrays.asList("thisredis"));

        //设置缓存过期时间(秒)

        rcm.setDefaultExpiration(600);

        return rcm;

    }



    @Bean

    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {

        StringRedisTemplate template = new StringRedisTemplate(factory);

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper om = new ObjectMapper();

        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        jackson2JsonRedisSerializer.setObjectMapper(om);

        template.setValueSerializer(jackson2JsonRedisSerializer);

        template.afterPropertiesSet();

        return template;

    }



}

可以看出,我们这里主要配置了两个东西,cacheManager方法配置了一个缓存名称,它的名字叫做thisredis,当我们要在方法注解里面使用到它的时候,就要根据名称进行区分不同缓存。同时设置了缓

存的过期时间。redisTemplate则是比较常见的,我们设置了RedisTemplate,因此在代码里面,我们也可以通过@Autowired注入RedisTemplate来操作redis.

使用

接下来就是如何使用注解啦,这一步反而是最简单的。其实只用到了两个注解,@Cacheable和@CacheEvict。第一个注解代表从缓存中查询指定的key,如果有,从缓存中取,不再执行方法。如果没有则执

行方法,并且将方法的返回值和指定的key关联起来,放入到缓存中。而@CacheEvict则是从缓存中清除指定的key对应的数据。使用的代码如下:

@Cacheable(value="thisredis", key="'users_'+#id")

    public User findUser(Integer id) {

        User user = new User();

        user.setUsername("hlhdidi");

        user.setPassword("123");

        user.setUid(id.longValue());

        System.out.println("log4j2坏啦?");

        logger.info("输入user,用户名:{},密码:{}",user.getUsername(),user.getPassword());

        return user;

    }



    @CacheEvict(value="thisredis", key="'users_'+#id",condition="#id!=1")

    public void delUser(Integer id) {

        // 删除user

        System.out.println("user删除");

    }

可以看出,我们用@Cacheable的value属性指定具体缓存,并通过key将其放入缓存中。这里key非常灵活,支持spring的el表达式,可以通过方法参数产生可变的key(见findUser方法),也可以通过其指定在

什么情况下,使用/不使用缓存(见delUser方法)。


本文作者: java乐园

本文来自云栖社区合作伙伴“JAVA乐园”,了解相关信息可以关注“JAVA乐园

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
springboot整合redis
redis是一个支持key-value的数据库,数据全部在内存中处理,在在一定时间间隔中将数据固化到磁盘。因为是内存操作,所以速度特别快。(这里我们主要介绍redis作为缓存使用)
66 0
SpringBoot整合Redis
SpringBoot整合Redis
100 0
springboot整合redis
直接上代码吧 1.首先pom中加入 org.springframework.boot spring-boot-starter-web org.
1131 0
SpringBoot整合Redis
偷懒了几天,好几天没写springboot了。真的不是没什么可写,是因为坚持做一件事真的很难。 今天抽空弄了一个springboot整合redis的小例子。
1335 0
Docker安装Redis并配置文件启动
之前已经写过Redis分别在Linux、Windows上安装部署,及其集群环境搭建。这次写一篇Docker容器部署Redis的教程,配置文件方式启动服务。
442 0
Centos7安装Redis、六条命令搞定
本文介绍Centos7如何安装Redis。
130 0
docker安装redis 【简易安装,持久化, 且不以配置文件启动】
docker安装redis 【简易安装,持久化, 且不以配置文件启动】
159 0
Redis(二)PHP7.2安装redis扩展及访问
服务器安装的是php7.2,就需要使用第一个命令php72w那个,具体使用什么命令,还需要按你自己的服务器PHP版本来看。安装后可用 which phpize 和 which php-config 查看安装的路径。
104 0
Redis(一)Centos7.6安装Redis服务
Centos的yum源中没有redis;这里我们需要安装一个第三方的yum源,这里用了Fedora的epel仓库。
73 0
+关注
技术小能手
云栖运营小编~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Spring Boot2.0实战Redis分布式缓存
立即下载
Redis Cluster的基本原理
立即下载
Redis的开发规范和常见问题
立即下载