SpringBoot整合Redis
1.导入依赖
1.1 导入SpringBoot的基础相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!-- springBoot支持 web基础依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--测试依赖导入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
1.2 导入Redis依赖
<!--spirngboot springdata对redis支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.applciation中配置Redis
spring:
application:
name: RedisApplication
redis:
database: 0 # 数据库索引
host: 127.0.0.1 # 服务器地址
port: 6379 # 服务器端口
password: 123456 # 服务器连接密码
jedis:
pool:
max-wait: 2000ms # 阻塞最大等待时间
min-idle: 2 # 最小空闲连接
max-idle: 8 # 最大空闲连接
3.Redis的基础操作
Springboot Spring data redis简化了redis的配置,操作。
将对象的状态信息转为存储或传输的形式需要序列化。需要框架支持序列化dataRedis已经实现了,只需要让需要保存的对象实现序列化接口Serializable
@Data
public class User implements Serializable {
// 序列化对象
private Long id;
private String name;
}
3.1 Redis中添加新的值
@SpringBootTest(classes = RedisApplciation.class)
@RunWith(SpringRunner.class)
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testAdd() {
// first是存入redis中的key值,User是对应的value
redisTemplate.opsForValue().set("first", new User(1L, "王天霸"));
Object first = redisTemplate.opsForValue().get("first");
System.out.println(first);
}
}
3.2 删除Redis中的值
@Test
public void testDelete() {
// 根据key删除redisTemplate中的值
Boolean bool = redisTemplate.delete("first");
System.out.println(bool);
Object first = redisTemplate.opsForValue().get("first");
System.out.println(first);
}
4.持久化和淘汰策略
4.1 Redis 提供了两种不同级别的持久化方式
RDB和AOF,可以通过修改redis.conf来进行配置。
1)RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.
2)AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
4.2 淘汰策略
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从所有数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从所有数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据
redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。
Redis存放数据永远过期。 allkeys-lru
volatile-lru,volatile-ttl随意就OK