day29 Redis入门与Java客户端

1. 今天做了什么

  1. Redis简介
    1. 键值数据库/NoSql
    2. SQL数据库:结构化、关联的、SQL查询、满足ACID、磁盘
    3. NoSQL:BASE、内存
  2. Redis命令
  3. Redis安装
    1. 安装Centos7虚拟机
    2. 安装redis:解压、编译安装、相关配置、设置自启动
  4. Redis Java客户端
    1. Jedis:优点、缺点(线程不安全)、使用、连接池
    2. Lettuce:线程安全
    3. Spring Data Redis:对二者整合封装、使用
  5. 新版配置写法
  6. Spring Data Redis配置序列化器(讲义中的已废弃)
  7. 手动序列化:节省内存、StringRedisTemplate、ObjectMapper

2. 核心知识点

  1. Redis Java客户端
    1. jedis:
      1. 优点
      2. 缺点:线程不安全,多线程需要为每个线程创建jedis实例
      3. 使用
        1. 引入依赖
        2. 创建对象,建立连接
        3. 使用
        4. 释放资源
      4. jedis连接池
    2. Lettuce
      1. 线程安全
    3. Spring Data Redis
      1. 对二者整合,封装
      2. 使用
  2. 新版的配置写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:  
data:
redis:
host: 192.168.233.128
port: 6379
password: 123456
database: 0
lettuce:

pool:
max-idle: 8
min-idle: 0
max-wait: 1000
max-active: 8
  1. Spring Data Redis配置序列化器
    1. 讲义中的json序列化器已废弃,改用:
1
2
3
4
5
6
7
8
9
10
11
12
13
@Bean  
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);

redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
redisTemplate.setHashValueSerializer(RedisSerializer.json());

redisTemplate.afterPropertiesSet();
return redisTemplate;
}
  1. 手动序列化
    1. 原因:节省内存
    2. StringRedisTemplate
    3. ObjectMapper

3. 深度思考

4. 踩过的坑

  1. 讲义中的json序列化器已废弃,需改用RedisSerializer.string()和RedisSerializer.json()的新版写法

5. 遗留问题 / 想不通