springboot redis实现缓存的例子

这篇具有很好参考价值的文章主要介绍了springboot redis实现缓存的例子。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好的,下面是带注释的代码:

1. 添加Redis依赖:


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

2. 配置Redis连接:


spring.redis.host=localhost
spring.redis.port=6379

3. 创建一个缓存管理类:


@Component
public class RedisCacheManager implements CacheManager {
 
    private final RedisTemplate<String, Object> redisTemplate;
 
    public RedisCacheManager(RedisTemplate<String, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
 
    @Override
    public Cache getCache(String name) {
        return new RedisCache(name, redisTemplate);
    }
 
    @Override
    public Collection<String> getCacheNames() {
        return Collections.emptyList();
    }
 
}

- `@Component`注解表示这是一个Spring Bean。
- `RedisCacheManager`实现了`CacheManager`接口,用于管理缓存。
- `RedisTemplate`是Spring提供的Redis客户端模板,用于操作Redis。
- `getCache`方法用于获取一个指定名称的缓存实例。
- `getCacheNames`方法返回所有缓存的名称。

4. 创建一个Redis缓存类:


public class RedisCache implements Cache {
 
    private final String name;
    private final RedisTemplate<String, Object> redisTemplate;
 
    public RedisCache(String name, RedisTemplate<String, Object> redisTemplate) {
        this.name = name;
        this.redisTemplate = redisTemplate;
    }
 
    @Override
    public String getName() {
        return name;
    }
 
    @Override
    public Object getNativeCache() {
        return redisTemplate;
    }
 
    @Override
    public ValueWrapper get(Object key) {
        Object value = redisTemplate.opsForValue().get(key.toString());
        return value != null ? new SimpleValueWrapper(value) : null;
    }
 
    @Override
    public <T> T get(Object key, Class<T> type) {
        Object value = redisTemplate.opsForValue().get(key.toString());
        return value != null ? type.cast(value) : null;
    }
 
    @Override
    public void put(Object key, Object value) {
        redisTemplate.opsForValue().set(key.toString(), value);
    }
 
    @Override
    public void evict(Object key) {
        redisTemplate.delete(key.toString());
    }
 
    @Override
    public void clear() {
        redisTemplate.execute((RedisCallback<Object>) connection -> {
            connection.flushDb();
            return null;
        });
    }
 
}

- `RedisCache`实现了Spring的`Cache`接口,用于操作缓存。
- `name`表示缓存的名称。
- `redisTemplate`是Redis客户端模板,用于操作Redis。
- `getName`方法返回缓存的名称。
- `getNativeCache`方法返回Redis客户端模板。
- `get`方法用于获取缓存中指定键的值。
- `put`方法用于向缓存中添加一个键值对。
- `evict`方法用于从缓存中删除指定键的值。
- `clear`方法用于清空缓存。

5. 在需要使用缓存的地方注入CacheManager:


@Service
public class MyService {
 
    private final CacheManager cacheManager;
 
    public MyService(CacheManager cacheManager) {
        this.cacheManager = cacheManager;
    }
 
    @Cacheable(value = "myCache", key = "#id")
    public String getValueById(String id) {
        // 从数据库中获取数据
        return "value";
    }
 
    @CachePut(value = "myCache", key = "#id")
    public void updateValueById(String id, String value) {
        // 更新数据库中的数据
    }
 
    @CacheEvict(value = "myCache", key = "#id")
    public void deleteValueById(String id) {
        // 从数据库中删除数据
    }
 
}

- `@Service`注解表示这是一个Spring Service Bean。
- `MyService`类中注入了`CacheManager`实例,用于操作缓存。
- `@Cacheable`注解表示这个方法的返回值将被缓存。
- `@CachePut`注解表示这个方法的返回值将被缓存,并且会更新缓存中的值。
- `@CacheEvict`注解表示这个方法将从缓存中删除指定键的值。

下面是一个使用上面提供的缓存管理类和Redis缓存类的例子:文章来源地址https://www.toymoban.com/news/detail-486736.html

@RestController
public class MyController {
 
    private final MyService myService;
 
    public MyController(MyService myService) {
        this.myService = myService;
    }
 
    @GetMapping("/get/{id}")
    public String getValueById(@PathVariable String id) {
        return myService.getValueById(id);
    }
 
    @PostMapping("/update")
    public void updateValueById(@RequestParam String id, @RequestParam String value) {
        myService.updateValueById(id, value);
    }
 
    @DeleteMapping("/delete/{id}")
    public void deleteValueById(@PathVariable String id) {
        myService.deleteValueById(id);
    }
 
}
  • MyController是一个Spring MVC的控制器,用于处理HTTP请求。
  • MyService是一个Spring Service Bean,用于操作缓存。
  • getValueById方法使用@Cacheable注解,表示这个方法的返回值将被缓存,如果缓存中存在指定键的值,则直接返回缓存中的值,否则从数据库中获取值并缓存起来。
  • updateValueById方法使用@CachePut注解,表示这个方法的返回值将被缓存,并且会更新缓存中的值。
  • deleteValueById方法使用@CacheEvict注解,表示这个方法将从缓存中删除指定键的值。
  • MyController中注入了MyService实例,用于操作缓存。
  • @GetMapping@PostMapping@DeleteMapping注解分别表示处理HTTP GET、POST和DELETE请求。

到了这里,关于springboot redis实现缓存的例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot2+Vue2实战(十四)springboot集成redis实现缓存

    添加redis缓存之后就不会一直刷新数据库,减少数据库压力 pom.xml依赖 也可以自定义key,要用 \\\' \\\' 括起来 fileController 数据库执行删除之后,第一次缓存也删除,后面就不会请求数据库 pom.xml application.yml EchartController 操作完数据库更新缓存操作:(增删改时使用) 第一种方法:

    2024年02月13日
    浏览(39)
  • 【案例实战】SpringBoot整合Redis实现缓存分页数据查询

    正式观看本文之前,设想一个问题,高并发情况下,首页列表数据怎么做? 类似淘宝首页,这些商品是从数据库中查出来的吗?答案肯定不是,在高并发的情况下,数据库是扛不住的,那么我们要怎么去扛住C端大并发量呢,这块我们可以借助Redis,我们知道Redis是一个基于内

    2024年02月09日
    浏览(58)
  • springboot的缓存和redis缓存,入门级别教程

    一、springboot(如果没有配置)默认使用的是jvm缓存 1、Spring框架支持向应用程序透明地添加缓存。抽象的核心是将缓存应用于方法,从而根据缓存中可用的信息减少执行次数。缓存逻辑是透明地应用的,对调用者没有任何干扰。只要使用@EnableCaching注释启用了缓存支持,Spri

    2024年02月07日
    浏览(53)
  • SpringBoot 整合 Redis 缓存

    Spring Boot提供了对Spring Cache抽象的支持,可以很容易地与Redis集成。 在pom.xml文件中添加Spring Boot Starter Redis依赖: 在application.properties或application.yml中配置Redis连接信息: 在Spring Boot应用的主类(通常是带有@SpringBootApplication注解的类)上添加@EnableCaching注解,启用缓存支持: 在

    2024年01月16日
    浏览(53)
  • pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)

      *也许看了上面你依然会一脸懵(别着急,下面给你举个例子)

    2024年02月07日
    浏览(36)
  • redis(12):springboot使用redis注解做缓存

    1 新建springboot项目   2 相关注解 @EnableCaching 在启动类上加上注解启动缓存 #作用在你要缓存的数据上 @Cacheable(key=\\\"#id\\\",cacheNames=\\\"com.sxt.service.impl.MenuServiceImpl\\\") @Cacheput 解决脏读 @CachEvict(解决脏读) @Cacheconfig(全局的配置缓存) 3 修改yml

    2024年02月15日
    浏览(45)
  • springboot:缓存不止redis,学会使用本地缓存ehcache

    随着redis的普及,更多的同学对redis分布式缓存更加熟悉,但在一些实际场景中,其实并不需要用到redis,使用更加简单的本地缓存即可实现我们的缓存需求。 今天,我们一起来看看本地缓存组件ehcache ehcache是基于java开发的本地缓存组件,无需单独安装部署,只要引入jar包就

    2024年02月01日
    浏览(43)
  • SpringBoot 如何使用 Redis 作为缓存?

    在今天的互联网应用中,缓存是一个非常重要的概念。缓存可以减轻数据库的负担,提高系统的性能。Redis 是一个非常流行的内存数据库,它可以用作缓存,提供快速的读写速度和高可用性。在本文中,我们将介绍如何在 SpringBoot 中使用 Redis 作为缓存。 Redis 是一个高性能的

    2024年02月11日
    浏览(37)
  • SpringBoot使用redis作为缓存的实例

    目录 什么是缓存?  缓存的作用? 缓存的成本? 实际项目中的应用  代码展示 缓存 就是数据交换的缓冲区(称作 Cache [ kæʃ ] ),是存贮数据的临时地方,一般读写性能较高。         降低后端负载         提高读写效率,降低响应时间         数据一致性成本

    2024年02月14日
    浏览(42)
  • springboot监听Redis 缓存过期(Key 失效)事件

    事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 故需要开启 redis 的事件监听与发布 修改 redis.conf 文件(Windows上是redis.windows.conf和redis.windows-service.conf) 通过开启key过期的事件通知,当key过期时,会发布过期事件;我们定义key过期事件的监听器,当key过期时,就能收到

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包