spring boot整合redis

本文介绍了如何在Spring Boot项目中整合Redis,包括安装Redis、启动服务、建立连接,以及详细讲解了基于注解和API的方式实现缓存功能。特别强调了注解的使用、序列化处理的重要性以及在实际操作中需要注意的点。
摘要由CSDN通过智能技术生成

spring boot整合redis

安装

redis下载地址

启动redis服务

可以双击redis-server.exe文件,也可以进入改目录,使用命令启动服务

在这里插入图片描述

连接redis服务

进入redis安装目录,使用以下命令连接:

redis-cli.exe -h 127.0.0.1 -p 6379

在这里插入图片描述

基于注解整合redis

1.添加redis的依赖

<!--        springboot 整合redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.4.5</version>
        </dependency>

2.使用yml文件配置redis

#springboot整合redis配置
#密码默认为空
spring:
  redis:
    host: 127.0.0.1
    port: 6379

3.启动类上添加@EnableCaching注解(目的是开启缓存)

4.这里以查询方法举例

使用注解@Cacheable(cacheNames=“user”,unless="#result==null"),该方法作用于要使用缓存的方法上。
1.cacheNames:定义缓存空间的名称
2.unles:当result=null时,不进行缓存(就是查询到的数据为null时不进行缓存)

5.对相关的pojo类实现Serializable接口,让类序列化(不然查询的数据无法被缓存且会报错)

常用的几个注解

1.@Cacheable:作用于数据查询的方法

2.@CachePut:作用于更新方法

3.@CacheEvict: 作用于数据删除

4.@CacheConfig(cacheNames=“user”):统筹管理@Cacheable、@CachePut、@CacheEvict注解标注的方法中的公共属性(包括cacheNames,keyGenerator、cacheManager、cacheResolver)

使用@CacheConfig好处是:使用@CacheConfig(cacheNames=“user”)注解可以统一设置缓存空间的名称,这样@Cacheable注解就不需要再设置缓存空间的名称了。如果@Cacheable等注解也设置了,则采取就近原则。

注意点:

1.pojo类必须序列化
2.必须声明缓存空间名称(即:使用@CacheConfig(cacheNames=“user”)注解及其@Cacheable等注解声明)

基于api的Redis缓存实现

1.继承CrudRepository接口,第一个参数为pojo类,第二个为主键的引用类型

@Repository
public interface UserRepository extends CrudRepository<User,Integer> {
   
	List<User> findById(int id);
	Optional<User> findByAge(int age);
	Optional<User> findBySex(String sex);
	Optional<User> findByName(String name);
//	更新数据
//	int updateUser(String name,int id);

//	删除数据
	int deleteUser(int id);
}

2.编写用于对缓存控制的类ApiUserServices,使用@Autowired注入RedisTemplate实例。

**
 * 基于redis的api的缓存操作
 * 通过该api:1.查询缓存  2.可以更新缓存  3.删除缓存 4.定制缓存过期时间
 * 这里使用Optional接收数据好处:不用像List集合那样比较麻烦的需要判读为空的情况
 *
 */

@Service
public class ApiUserServices {
   
	@Autowired
	private UserRepository userRepository;
	Logger logger= LoggerFactory.getLogger(ApiUserServices.class);
	@Autowired
	private RedisTemplate redisTemplate;

//	查询数据
	public User findById(int userID){
   
//		从缓存中查询数据 如果缓存中有对应数据就返回,否者从redis数据库中查询
		Object object=redisTemplate.opsForValue()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值