Redis是一个基于内存的键值型NoSQL数据库。其具有性能优越、持久化的特点,能够支持每秒十几万次的读写操作。
安装成功:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D32hRbKi-1670254635383)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20221129191146532.png)]](https://1000bd.com/contentImg/2024/04/13/4bd1a02a9496c8b8.png)
Redis是一个key-value的数据库。
key:“String”,
value:通常是一个字符串
查阅网址:redis命令手册
KEYS:查看符合模板的所有key
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置一个有效期,有效期到时会被自动删除
TTL:查看一个key的剩余有效期
…
其在底层是以字节数组形式存储的。
key可以设置为多个单词组成的层级结构,用:隔开
例如:project:user:1
结构:Hash结构可以将对象中的每个字段独立存储
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buC8C6aL-1670254635384)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20221128225955973.png)]](https://1000bd.com/contentImg/2024/04/13/4abfebf0d1b1fc35.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHqkEAD8-1670254635384)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20221128225754509.png)]](https://1000bd.com/contentImg/2024/04/13/58435ea4eef4b6c2.png)
在Java项目中使用Redis步骤如下。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
spring:
redis:
host: 192.168.1.158
port: 6379
password: 123456
lettuce:
pool:
max-active: 10
max-idle: 10
min-idle: 1
time-between-eviction-runs: 10s
在spring中,将对象存入Redis中需要将其序列化,其序列化有两种方式:
两种序列化实践方案:
自定义RedisTemplate,修改RedisTemplate的序列化器为GenericJacksonRedisSerializer
使用StringRedisTemplate,写入Redis时,手动把读取到的JSON反序列化为对象。(节省内存)
@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON工具
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void testStringTemplate() throws JsonProcessingException {
//准备对象
User user = new User("虎哥", 18);
//手动序列化
String json = mapper.writeValueAsString(user);
//写入一条数据到redis
stringRedisTemplate.opsForValue().set("user:200", json);
/读取数据
String val = stringRedisTemplate.opsForValue().get("user:200");
//反序列化
User user1 = mapper.readValue(val, User.class);
System.out.println("user1 = " + user1);
}