SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

SpringBoot+Redis存储序列化对象+Spring cache的使用 SpringBoot+Redis存储序列化对象+Spring cache的使用导入依赖配置config文件缓存的使用Redis的单独使用 导入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 配置config 阅读详情

前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache、RedisCache、ConcurrentMapCache等。

这一节我们来看看Spring Cache使用RedisCache。

一、RedisCache使用演示

Redis是一个key-value存储系统,在web应用上被广泛应用,这里就不对其过多描述了。

本章节示例是在Spring Boot集成Spring Cache的源码基础上进行改造。源码地址:https://github.com/imyanger/springboot-project/tree/master/p20-springboot-cache

使用RedisCache作为缓存,我们先引入相关依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

然后SpringBoot配置文件中,对redis进行配置。

server:
  port: 10900

spring:
  profiles:
    active: dev
  redis:
    host: localhost #redis服务器地址
    port: 6379 #redis端口
    password: 1234 #redis密码
    timeout: 60000 #连接超时时间
    database: 0 #数据库索引,默认为0

SpringBoot中使用Redis,可以通过Spring Cache的注解,也可以使用RedisTemplate来实现,大部分情况下,因为注解存在一定局限性不够灵活,一般实际开发中都是使用的RedisTemplate。

附上CacheConfig注入RedisTemplate,如果不需要使用RedisTemplate,直接将@EnableCaching注解加在SpringBoot启动类上即可。

@Configuration
@EnableCaching
public class CacheConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);

        // 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
        Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(mapper);

        redisTemplate.setValueSerializer(serializer);
        // 使用StringRedisSerializer来序列化和反序列化redis的key值
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

}

这样就可以开始使用RedisCache了,测试代码与Spring Boot集成Spring Cache一致。

CacheApi接口调用类,方便调用进行测试。

@RestController
@RequestMapping("cache")
public class CacheApi {

    @Autowired
    private CacheService cacheService;

    @GetMapping("get")
    public User  get(@RequestParam int id){
        return cacheService.get(id);
    }

    @PostMapping("set")
    public User  set(@RequestParam int id, @RequestParam String code, @RequestParam String name){
        User u = new User(code, name);
        return cacheService.set(id, u);
    }

    @DeleteMapping("del")
    public void  del(@RequestParam int id){
        cacheService.del(id);
    }
    
}

CacheService缓存业务处理类,添加缓存,更新缓存和删除。

@Slf4j
@Service
public class CacheService {

    private Map<Integer, User> dataMap = new HashMap <Integer, User>(){
        {
            for (int i = 1; i < 100 ; i  ) {
                User u = new User("code"   i, "name"   i);
                put(i, u);
            }
        }
     };

    // 获取数据
    @Cacheable(value = "cache", key = "'user:'   #id")
    public User get(int id){
        log.info("通过id{}查询获取", id);
        return dataMap.get(id);
    }

    // 更新数据
    @CachePut(value = "cache", key = "'user:'   #id")
    public User set(int id, User u){
        log.info("更新id{}数据", id);
        dataMap.put(id, u);
        return u;
     }

    //删除数据
    @CacheEvict(value = "cache", key = "'user:'   #id")
    public void del(int id){
        log.info("删除id{}数据", id);
        dataMap.remove(id);
    }
    
}

启动服务进行测试,可以看到缓存功能正常,且打开redis进行查看,也能看到对应的缓存数据。

源码地址:https://github.com/imyanger/springboot-project/tree/master/p21-springboot-cache-redis

Spring Boot学习笔记:集成EhCache和RedisCache实现缓存 Maven依赖配置 <!-- 引入 spring-boot-starter-web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </... 阅读详情

相关推荐

振动能量采集技术:从原理到实战,破解物联网供电难题

能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考

weixin_42660494的博客 567

static和@Autowired结合报错空指针问题

在项目中使用redis遇到了注入为空的问题,排查问题发现是因为同时使用了static和Autowired问题。问题原因:原项目中使用的是Hazelcast,现需要将其替换为refsa错误原因:和加载顺序有关系,static在类初始化的时候就加载,且只加载一次。早于自动注入,所以会报空指针。且spring本身也不支持这种写法。但依然有解决的办法,目的是让自动注入执行顺序先于static。

ddccaaxXasac的博客 499

引入 CloudWeGo 后飞书管理后台平台化改造的演进史

飞书管理后台是飞书套件专为企业管理员提供的信息管理平台,它通过引入 Kitex 泛化调用对飞书管理后台进行平台化改造,成为了企业统一数字化管理平台。本文将从三个方面为大家讲解 Kitex 泛化调用在飞书管理后台平台化改造过程中的落地实践。...

weixin_44186218的博客 1762

Springboot整合SpringCache+Redis

Springboot整合SpringCache+Redis

SampsonKong的博客 2648

IO多路转接 ——— select、poll、epoll

select是系统提供的一个多路转接接口。select函数的函数原型如下: 参数说明:参数timeout的取值:返回值说明:select调用失败时,错误码可能被设置为:fd_set结构与sigset_t结构类似,fd_set本质也是一个位图,用位图中对应的位来表示要监视的文件描述符。 调用select函数之前就需要用fd_set结构定义出对应的文件描述符集,然后将需要监视的文件描述符添加到文件描述符集当中,这个添加的过程本质就是在进行位操作,但是这个位操作不需要用户自己进行,系统提供了一组专门的接口,用

2021dragon的博客 7977

关于在线excel插件Univer笔记教程

univer在线excel插件确实是够强大,但也存在不少bug,用户用起来是真的很爽,和本地的wps差不多,但真正的开发起来是真的费劲。由于文档提供的信息不足,我们很多功能只能去看他们插件里的源代码,然后一点点测试,一点点尝试研究。此文章可省去五天的研究成本

guiplan 5826

springbootCache和Redis缓存机制

简介 我想要开发一个社交网站,社交网站存储好友列表成为了开发过程中的一大难题。 如果我想要保存每一个用户的好友信息该怎么保存呢? 用用户的id对应着好友的id,这样一条信息就是一个好友关系映射图,这张关系表可能长下面这样 id user_id friend_id 1 1 2 2 1 一个用户的好友由friend_id记录,1号用户和2号用户互为好友,这样的记录虽然冗余但是不得不记录下来。但是这样有很大的弊端。 假设我有200个用户,每个用户有300个好友,那么这样一张表就会有200

m0_48159893的博客 4270

ardupilot开发 --- 避障篇

适配ardupilot的雷达避障功能开发,使用低成本雷达思岚科技系列雷达,配置简单,灵敏度高,障碍物检测范围不低于30m。

记录老板的每次pua,分享领导每天的毒鸡汤... 4301

SpringBoot实现Redis缓存(SpringCache+Redis的整合)

数据库的数据是存储在硬盘上的,频繁访问性能较低。如果将一些需要频繁查询的热数据放到内存的缓存中,可以大大减轻数据库的访问压力。 SpringCache SpringCache提供基本的Cache抽象,并没有具体的缓存能力,需要配合具体的缓存实现来完成,目前SpringCache支持redis、ehcache、simple(基于内存)等方式来实现缓存。 <dependency> <groupId>org.springframework.boot</groupId>

user2025的博客 2万+

Transformer模型详解

​本文主要介绍Transformer系列,从基础到理论,对注意力机制进行总结并解释《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention。文章的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 5296

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5592

SpringSecurity前后端分离02(授权)

目录抛砖引玉登录授权实践RBAC权限控制自定义失败处理跨域问题的解决 源码 首先授权的话,我们可以在之前自定义JwtAuthenticationTokenFilter发现:先回顾一下,利用JwtAuthenticationTokenFilter对请求进行token过滤,通过token得到的userid,然后作为键得到redis中的值,如果不为空说明已经登录可以访问,那么我要加权限,我们可以在Authentication用户信息的封装中+权限 问题来了,这个权限怎么加呢?了解Security流程就知道,我

weixin_57128596的博客 1630

Android性能分析——hprof文件分析(一)

hprof  文件是 Java 堆转储文件(Heap Dump File)的标准格式,用于保存 Java 虚拟机(JVM)在某个时间点的内存快照。这种文件对于分析内存泄漏、内存使用情况和对象分配模式非常有用。

小旭的专栏 1879

spring boot+spring cache实现两级缓存(redis+caffeine)

更新时间:2018年02月27日 13:43:41 作者:J猿这篇文章主要介绍了spring boot+spring cache实现两级缓存(redis+caffeine),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧spring boot中集成了spring cache,并有多种缓存方式的实现,如:Redis、Caffeine、JCache、EhCache等等。

竹林幽深 1208

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

springboot 自定义RedisCache注解

springboot提供的Cache注解 当我们在编写查询数据库Service时,需要现在redis中查询是否有所需数据的缓存,如果有,则无需去查询数据库,这无疑提高了查询速度同时减轻了数据库的压力。 在使用springboot整合redis时,相信大家都对@Cacheable这个注解不陌生吧 例如我们需要在Service查询数据库前先去缓存中查询,如果没有在查询数据库,有则不去查询,我们只需要在redisTemplate配置类中加入@EnableCaching注解,并配置Spring Cache注解功能,

weixin_42494845的博客 840

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot缓存通用方案(RedisCache缓存的实现)(二)

SpringBoot 很早就为我们提供好了Cache的操作规范,使用简洁方便,可以按需使用注解与编码的方式基础使用见之前编写的另一篇文章,此篇着重于写一个通用的方案SpringBootCache的使用(Redis实现)从统一规范化入手,避免过多的改造,首先自定义一个缓存的接口,提供新增缓存、更新缓存、删除缓存等通用的抽象方法,以用来满足缓存的key为入参、value为出参的格式、不需要子类实现的可以定义默认方法。

weixin_47224121的博客 2395

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

springboot-cache

几个概念 Cahce:缓存接口,定义缓存操作。实现的有RedisCache、EhCache、ConcurrentMapCache等; CacheManager:缓存管理器,管理各种缓存组件,默认使用ConcurrentMapCacheManager; @Cacheable:主要加在方法上,能够缓存方法的返回结果(方法的结果缓存后,下一次调用该方法将不执行,直接从缓存中获取同一对象 ); value:缓存组件名,将结果放在哪个缓存中,可多个 key:缓存数据的key,默认使用方法参数...

fantasyleaves的博客 235

Redis 从入门到实战:SpringBoot 整合与 Cache 缓存应用

本文全面介绍Redis在SpringBoot项目中的整合与应用。首先概述Redis作为高性能键值数据库的特性,包括多种数据类型支持、持久化机制和分布式能力。接着详细讲解Windows环境下的Redis安装配置、基础命令操作以及可视化工具使用。重点阐述SpringBoot通过spring-boot-starter-data-redis快速集成Redis的方法,包括连接池优化配置、RedisTemplate和StringRedisTemplate的使用差异,以及各类数据结构的操作示例。文章还提供了实用的Redi

A13549502743的博客 760

SpringBoot学习笔记【part14】Spring Cache + Redis 集成缓存数据

是一个非常优秀的缓存组件,方便切换各种底层Cache(如:redis)项目集成Spring Cache + Redis,步骤如下。

Parker_cpp的博客 1189

spring boot redis 缓存(cache)集成

Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2...

bailing8888888的博客 255

Springboot——整合Redis和cache缓存

文章目录前言Spring Cache案例达到目的依赖引入配置文件配置后的文件目录编写测试类等基本代码初步测试,查看数据是否能被添加至Redis缓存cache注解测试和详解@Cacheable 注解@CacheConfig注解@CachePut 注解@CacheEvict 注解@Caching注解更细节的注解信息汇总命令@Cacheable/@CachePut/@CacheEvict 主要的参数SpEL上下文数据运算符参考资料Demo下载 前言 实际开发中,针对请求量大的数据并且频繁请求的数据信息,在不断的对

专注写bug 1107
上一篇: SpringBoot系列:Spring Boot集成Spring Cache,使用EhCache
下一篇: SpringBoot系列:Spring Boot异步调用@Async
杨小格
博客等级 码龄10年 19粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值