一、Redis介绍及基本概念
Redis是一个基于内存的key-value存储系统,它拥有高性能、可扩展性和灵活性,并且支持多种数据结构。通常用于缓存、队列、排名等场景。
Redis有以下几个基本概念:
Key:Redis中的数据存储是以key-value的方式进行,而key就是用来标识唯一数据的字符串。
Value:Redis中的数据可以是任意的数据类型,包括字符串、哈希、列表、集合等。
Expiration:Redis支持给每个key设置过期时间,到了过期时间后key会被自动删除。
Namespace:Redis的key可以通过一个命名空间进行分组,命名空间下的key会被Redis自动统一添加一个前缀。这样做可以方便地查看和管理命名空间下的key。
二、Spring Boot集成Redis
Spring Boot为我们提供了非常方便的方式来集成Redis。只需添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
同时,我们需要在application.properties中配置Redis相关的信息:
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
其中,spring.redis.host和spring.redis.port分别是Redis服务器的IP地址和端口号;spring.redis.password是Redis密码;spring.redis.database是Redis库的编号。
三、Redis缓存管理的基本使用
1. 缓存注解
Spring Boot为我们提供了缓存注解,包括@Cacheable、@CachePut、@CacheEvict等。其中:
- @Cacheable:查询缓存,如果缓存中存在,则直接返回缓存中的数据,否则执行方法,将方法返回结果存入缓存。
- @CachePut:更新缓存,执行方法并将返回结果存入缓存。
- @CacheEvict:删除缓存,执行方法并删除缓存。
这里以@Cacheable为例介绍缓存的基本使用。首先要在启动类上添加@EnableCaching注解,开启缓存功能。
@SpringBootApplication
@EnableCaching
public class RedisApplication {
public static void main(String[] args) {
SpringApplication.run(RedisApplication.class, args);
}
}
然后,在需要进行缓存管理的方法上添加@Cacheable注解即可:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Cacheable(value = "userCache", key = "#id")
public User getUserById(String id) {
System.out.println("get user by id from db");
return userDao.getUserById(id);
}
}
其中,value为缓存名称,key为缓存的唯一标识。上面代码的意思是,在缓存名称为userCache的缓存中,key为参数id的缓存是否存在。如果存在,则方法不执行,直接返回缓存中的数据;如果不存在,则执行方法,并将方法返回结果存入缓存。
2. 缓存过期
Redis支持对每个key设置过期时间,到了过期时间后key会被自动删除。可以通过@Cacheable注解的ttl属性指定缓存的过期时间,ttl的单位是秒。
@Cacheable(value = "userCache", key = "#id", ttl = 60)
上面代码的意思是,将key为$id的缓存数据放入userCache缓存中,并设置过期时间为60秒。
四、命名空间
Redis支持给key设置命名空间,以防止不同功能模块之间产生冲突。在Spring Boot中,可以通过在@CacheConfig注解中指定cacheNames来指定缓存命名空间。
@CacheConfig(cacheNames = "user")
上面代码的意思是,缓存将被存储在“user”命名空间中。
五、总结
通过本文的介绍,我们了解了Redis的基本概念和Spring Boot集成Redis的方法。同时,我们还介绍了Spring Boot提供的缓存注解@Cacheable、@CachePut、@CacheEvict,以及缓存过期和命名空间的使用方法。
在实际开发中,我们可以根据实际情况选择合适的缓存策略,提高系统性能,满足业务需求。