SpringCloud使用Redis缓存

该博客介绍了如何在SpringCloud项目中利用Redis进行缓存优化,包括Redis环境的docker搭建,SpringDataRedis的使用,以及文章查询、更新或删除时的缓存处理策略,如查询操作缓存、修改删除后的缓存清除和缓存过期时间设置。

为了提高查询的性能,我们通常采用Redis缓存解决。

Redis环境搭建

我们以docker的形式搭建Redis 服务

docker run -di --name=tensquare_redis -p 6379:6379 redis

SpringDataRedis

Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作。

实现文章的缓存处理

查询文章操作缓存

(1)在tensquare_article 的pom.xml引入依赖

spring cloud中需要引入如下

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

(2)修改application.yml ,在spring节点下添加配置

  redis:
    host: 192.168.2.10
    port: 6379

(3)修改ArticleService 引入RedisTemplate,并修改findById方法

	@Autowired
	private RedisTemplate redisTemplate;

	/**
	 * 根据ID查询实体
	 * @param id
	 * @return
	 */
	public Article findById(String id) {
		//先从缓存中拿数据
		Article article = (Article)redisTemplate.opsForValue().get("article_"+id);
		//如果拿不到,就去数据库中查询
		if (article==null){
			article = articleDao.findById(id).get();
			//放入缓存中
			redisTemplate.opsForValue().set("article_"+id, article, 20, TimeUnit.SECONDS);
		}
		return article;
	}

这样在查询的时候,就会自动将文章放入缓存

修改或删除后清除缓存

	/**
	 * 修改
	 * @param article
	 */
	public void update(Article article) {
		//清除缓存中的数据
		redisTemplate.delete("article_"+article.getId());
		articleDao.save(article);
	}

	/**
	 * 删除
	 * @param id
	 */
	public void deleteById(String id) {
		//清除缓存中的数据
		redisTemplate.delete("article_"+id);
		articleDao.deleteById(id);
	}

缓存过期处理

修改findById方法 ,设置1天的过期时间

redisTemplate.opsForValue().set("article_" + id, article, 1, TimeUnit.DAYS);

为了方便测试,我们可以把过期时间改为10秒,然后观察控制台输出

redisTemplate.opsForValue().set("article_" + id, article,10, TimeUnit.SECONDS);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值