SpringCloud使用Redis缓存

    xiaoxiao2025-01-18  22

    SpringCloud使用Redis缓存

    Redis环境搭建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);
    最新回复(0)