Redis是一个基于内存的键值型NoSQL数据库。其具有性能优越、持久化的特点,能够支持每秒十几万次的读写操作。
安装成功:
Redis是一个key-value的数据库。
key:“String”,
value:通常是一个字符串
查阅网址:redis命令手册
KEYS:查看符合模板的所有key
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置一个有效期,有效期到时会被自动删除
TTL:查看一个key的剩余有效期
…
其在底层是以字节数组形式存储的。
key可以设置为多个单词组成的层级结构,用:
隔开
例如:project:user:1
结构:Hash结构可以将对象中的每个字段独立存储
在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);
}