Spring Boot整合Redis注解,实战Redis注解使用

以下是一个基于Spring Boot整合Redis注解实现增删改查功能的实战教程,内容分为配置、实体类、Repository、Service及测试示例:


配置Redis连接

application.propertiesapplication.yml中添加Redis配置:

properties 复制代码
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0

添加Spring Boot Redis依赖(Maven):

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

定义实体类

使用@RedisHash注解标记实体类,并定义主键:

java 复制代码
@RedisHash("User")
public class User {
    @Id
    private String id;
    private String name;
    private int age;
    // 省略getter/setter
}

创建Repository接口

继承CrudRepository并指定泛型类型:

java 复制代码
public interface UserRepository extends CrudRepository<User, String> {
}

增删改查操作示例

插入数据

通过save方法插入或更新数据:

java 复制代码
@Autowired
private UserRepository userRepository;

public void addUser(User user) {
    userRepository.save(user);
}
查询数据

使用findById或自定义查询方法:

java 复制代码
public User getUserById(String id) {
    return userRepository.findById(id).orElse(null);
}

// 自定义查询(需在Repository中声明方法)
@Indexed
public List<User> findByAge(int age);
删除数据

通过deleteById或对象删除:

java 复制代码
public void deleteUser(String id) {
    userRepository.deleteById(id);
}
更新数据

更新操作与插入相同(自动覆盖):

java 复制代码
public void updateUser(User user) {
    userRepository.save(user);
}

缓存注解应用

在Service层使用@Cacheable等注解实现缓存:

查询缓存
java 复制代码
@Service
public class UserService {
    @Cacheable(value = "users", key = "#id")
    public User getUser(String id) {
        // 模拟数据库查询
        return userRepository.findById(id).orElse(null);
    }
}
更新缓存
java 复制代码
@CachePut(value = "users", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}
删除缓存
java 复制代码
@CacheEvict(value = "users", key = "#id")
public void deleteUser(String id) {
    userRepository.deleteById(id);
}

测试验证

编写测试类验证功能:

java 复制代码
@SpringBootTest
public class RedisTest {
    @Autowired
    private UserService userService;

    @Test
    public void testCrud() {
        User user = new User();
        user.setId("1");
        user.setName("Alice");
        userService.addUser(user);

        User cachedUser = userService.getUser("1");
        Assertions.assertNotNull(cachedUser);
    }
}

关键注解说明

  • @RedisHash:定义Redis中的存储哈希名称
  • @Id:标记主键字段
  • @Indexed:为字段创建二级索引
  • @Cacheable:查询时优先读取缓存
  • @CachePut:更新数据时同步更新缓存
  • @CacheEvict:删除数据时清除缓存

通过以上步骤即可实现Spring Boot与Redis注解的整合操作。注意缓存注解需在启动类添加@EnableCaching启用缓存功能。

相关推荐
川石课堂软件测试2 小时前
软件测试的白盒测试(二)之单元测试环境
开发语言·数据库·redis·功能测试·缓存·单元测试·log4j
我爱学习好爱好爱2 小时前
Prometheus监控栈 监控redis和mongodb
redis·grafana·prometheus
言之。2 小时前
Django流式响应
后端·python·django
invicinble2 小时前
common3依赖包,提供工具类详解
spring boot
IT_Octopus2 小时前
Java Protobuf+Zstd 压缩存储Redis实践&问题解决&对比Gzip压缩的大小和性能
java·开发语言·redis
泽济天下2 小时前
Spring Boot 4.0 新特性全解:基线升级、Web 生态换代、API 版本治理、声明式 HTTP Client
spring boot
IT_陈寒2 小时前
Java 21虚拟线程实战:7个性能翻倍的异步重构案例与避坑指南
前端·人工智能·后端
无泪无花月隐星沉2 小时前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
不思念一个荒废的名字2 小时前
【黑马JavaWeb+AI知识梳理】Web后端开发05-SpringAOP
后端
我爱学习好爱好爱2 小时前
Springboot+OSHI+Vue+ECharts 全栈监控系统
vue.js·spring boot·echarts