经过 Spring Boot 的整合封装与自动化配置,在 Spring Boot 中整合Redis 已经变得非常容易了,开发者只需要引入 Spring Data Redis 依赖,然后简单配下 redis 的基本信息,系统就会提供一个 RedisTemplate 供开发者使用,但是今天松哥想和大伙聊的不是这种用法,而是结合 Cache 的用法。Spring3.1 中开始引入了令人激动的 Cache,在 Spring Boot 中,可以非常方便的使用 Redis 来作为 Cache 的实现,进而实现数据的缓存。了解springcloud架构可以加求求:三五三六二四七二五九
工程创建
首先创建一个 Spring Boot 工程,注意创建的时候需要引入三个依赖, web、cache 以及 redis,如下图:
对应的依赖内容如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
基本配置
工程创建好之后,首先需要简单配置一下 Redis,Redis 的基本信息,另外,这里要用到 Cache,因此还需要稍微配置一下 Cache,如下:
spring.redis.port=6380 spring.redis.host=192.168.66.128 spring.cache.cache-names=c1
简单起见,这里我只是配置了 Redis 的端口和地址,然后给缓存取了一个名字,这个名字在后文会用到。
另外,还需要在配置类上添加如下代码,表示开启缓存:
@SpringBootApplication @EnableCaching public class RediscacheApplication { public static void main(String[] args) { SpringApplication.run(RediscacheApplication.class, args); } }
完成了这些配置之后,Spring Boot 就会自动帮我们在后台配置一个 RedisCacheManager,相关的配置是在org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration 类中完成的。部分源码如下:
@Configuration @ConditionalOnClass(RedisConnectionFactory.class) @AutoConfigureAfter(RedisAutoConfiguration.class) @ConditionalOnBean(RedisConnectionFactory.class) @ConditionalOnMissingBean(CacheManager.class) @Conditional(CacheCondition.class) class RedisCacheConfiguration { @Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory, ResourceLoader resourceLoader) { RedisCacheManagerBuilder builder = RedisCacheManager .builder(redisConnectionFactory) .cacheDefaults(determineConfiguration(resourceLoader.getClassLoader())); List<String> cacheNames = this.cacheProperties.getCacheNames(); if (!cacheNames.isEmpty()) { builder.initialCacheNames(new LinkedHashSet<>(cacheNames)); } return this.customizerInvoker.customize(builder.build()); } }
看类上的注解,发现在万事俱备的情况下,系统会自动提供一个 RedisCacheManager 的 Bean,这个 RedisCacheManager 间接实现了 Spring 中的 Cache 接口,有了这个 Bean,我们就可以直接使用 Spring 中的缓存注解和接口了,而缓存数据则会被自动存储到 Redis 上。在单机的 Redis 中,这个 Bean 系统会自动提供,如果是 Redis 集群,这个 Bean 需要开发者来提供(后面的文章会讲到)。
缓存使用
这里主要向小伙伴们介绍缓存中几个核心的注解使用。
@CacheConfig
这个注解在类上使用,用来描述该类中所有方法使用的缓存名称,当然也可以不使用该注解,直接在具体的缓存注解上配置名称,示例代码如下:
@Service @CacheConfig(cacheNames = "c1") public class UserService { }
@Cacheable
这个注解一般加在查询方法上,表示将一个方法的返回值缓存起来,默认情况下,缓存的 key 就是方法的参数,缓存的 value 就是方法的返回值。示例代码如下:
@Cacheable(key = "#id") public User getUserById(Integer id,String username) { System.out.println("getUserById"); return getUserFromDBById(id); }
相关推荐
新建一个spring boot项目,命名springcloud-session-redis POM依赖配置 4.0.0 com.carry springcloud-session-redis 0.0.1-SNAPSHOT jar springcloud-session-redis Demo project for Spring Boot org....
JAVA商城后台 SpringBoot3商城接口+Vue3商城前端 微信小程序商城源码 模式包含 B2B2C商城 S2B2C商城 O2O商城 SAAS商城 小程序商城 H5商城 APP商城 PC商城,一个基于spring boot、spring oauth2.0、mybatis、redis的...
Java B2B2C 商城系统是一种复杂的电子商务平台,它涵盖了商家对商家(B2B)、商家对消费者(B2C)以及消费者对消费者(C2C)等多种交易模式。这种系统的设计和实现涉及到众多的技术栈和功能模块,旨在提供一个全面、...
标题中的“基于Spring Boot的JAVA商城系统”是一个采用Spring Boot框架构建的Java电子商务平台。Spring Boot简化了Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如Redis、MyBatis、JPA等,...
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城 前言 Mall4j项目...
【源码编号 : MF00001】的JAVA多用户B2B2C商城系统源码是一款基于Java编程语言开发的电子商务平台,其主要目标是构建一个支持B2B(Business to Business)和B2C(Business to Consumer)模式的综合性购物系统。...
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城。
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城 `Mall4j`项目致力于...
Mall4j开源商城,一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的开源商城
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城。Mall4j项目致力于...
Mall4j开源商城,一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的开源商城。...
Mall4j开源商城,一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的开源商城。...
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城。Mall4j项目致力于...
此外,Java项目可能使用了Spring Boot、MyBatis、Redis、MySQL等技术栈,构建了微服务架构,以实现高并发、高性能和高可用性。前端可能使用了Vue.js或React.js等框架来构建用户友好的界面。系统的安全性方面,可能会...
除了开源版本,我们商业版有B2C和B2B2C商城,多端呈现:小程序 + PC + H5 + APP,更多详情请查看官网 Mall4j官网 Mall4j 使用 AGPLv3 开源,请遵守 AGPLv3 的相关条款,或者联系作者获取商业授权() 项目链接 java...
除了开源版本,我们商业版有B2C和B2B2C商城,多端呈现:小程序 + PC + H5 + APP,更多详情请查看官网 Mall4j官网 Mall4j 使用 AGPLv3 开源,请遵守 AGPLv3 的相关条款,或者联系作者获取商业授权() 项目链接 java...
mall4cloud是一个采用主流技术栈Spring Boot和Spring Cloud Alibaba构建的高质量B2B2C电商商城系统。项目代码质量高,遵循阿里巴巴代码规约,具备丰富营销工具,但Web端暂未开源。 - Github地址:...
除了开源版本,我们商业版有B2C和B2B2C商城,多端呈现:小程序 + PC + H5 + APP,更多详情请查看官网 Mall4j官网 Mall4j 使用 AGPLv3 开源,请遵守 AGPLv3 的相关条款,或者联系作者获取商业授权() 项目链接 java...
除了开源版本,我们商业版有B2C和B2B2C商城,多端呈现:小程序 + PC + H5 + APP,更多详情请查看官网 Mall4j官网 Mall4j 使用 AGPLv3 开源,请遵守 AGPLv3 的相关条款,或者联系作者获取商业授权() 项目链接 java...