Redis 5大核心数据类型与持久化实战

day05 Redis 学习笔记(完整版)

一、今日学习目标

  1. 理解Redis简介与核心优势
  2. 掌握Redis5种核心数据类型及常用命令
  3. 学会Java代码操作Redis
  4. 掌握RedisRDB+AOF两种持久化方式(高频面试题)

二、Redis简介

  1. 定义 :开源免费、高性能的key-value型NoSQL数据库,C语言开发,QPS可达10万+
  2. 三大特点
    • 支持数据持久化,重启不丢数据
    • 支持5种丰富数据结构
    • 支持主从备份(master-slave)
  3. 核心使用场景
    • 缓存(最常用)、排行榜、计数器
    • 社交网络(点赞/关注)、消息队列
    • 存储热点数据(商品、新闻、资讯)
  4. 补充
    • NoSQL:非关系型数据库,是关系型数据库(MySQL/Oracle)的补充,不是替代

三、Redis核心优势

  1. 性能极高:读≈11万次/秒,写≈8.1万次/秒
  2. 数据类型丰富:String/Hash/List/Set/ZSet
  3. 原子性:所有操作要么全成功,要么全失败
  4. 特性齐全:发布订阅、key过期、通知等

四、Redis下载、配置、启动

1. 下载地址

2. 核心配置(redis.windows.conf)

ini 复制代码
# 最大内存1GB
maxmemory 1024000000
# 内存淘汰策略:删除最近最少使用且带过期时间的key
maxmemory-policy volatile-lru
# 数据存放目录
dir D:\redis_data
# 连接密码
requirepass 123456

3. 启动命令

bash 复制代码
# 指定配置文件启动服务
redis-server.exe redis.windows.conf
# 客户端连接
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456

4. Windows服务安装/卸载

bash 复制代码
# 安装服务
redis-server --service-install redis.windows.conf
# 卸载服务
redis-server --service-uninstall

五、Redis可视化工具

  • 工具:Redis Desktop Manager(RDM)
  • 连接配置
    • 名称:本地Redis
    • 主机:127.0.0.1
    • 端口:6379
    • 密码:123456
  • 作用:可视化查看/增删改查数据,方便学习调试

六、Redis 5大核心数据类型(重点)

Redis key固定为String,value分5种类型

1. String(字符串)------最基础

  • 常用命令

    bash 复制代码
    set key value        # 新增/修改
    setex key 秒 value   # 带过期时间
    mset k1 v1 k2 v2     # 批量设置
    get key              # 查询
    append key value     # 追加
    del key              # 删除
    keys *               # 查看所有key
    ttl key              # 查看过期时间

2. Hash(哈希)------存对象/键值对

  • 适用:存用户信息、商品详情

  • 常用命令

    bash 复制代码
    hset key field value    # 单个赋值
    hget key field          # 单个查询
    hgetall key             # 查询所有字段+值
    hdel key field          # 删除字段

3. List(列表)------有序可重复

  • 适用:队列、消息、顺序列表

  • 常用命令

    bash 复制代码
    lpush key value    # 左侧添加
    rpush key value    # 右侧添加
    lrange key 0 -1    # 查询所有
    lset key index val # 修改指定索引
    lpop/rpop key      # 左侧/右侧弹出

4. Set(集合)------无序不可重复

  • 适用:去重、共同关注、好友推荐

  • 常用命令

    bash 复制代码
    sadd key value     # 添加
    smembers key       # 查询所有
    srem key value     # 删除

5. ZSet(有序集合)------按分数排序

  • 适用:排行榜、热度排序

  • 常用命令

    bash 复制代码
    zadd key score value   # 添加(带分数)
    zrange key 0 -1        # 查询排序结果
    zrem key value         # 删除

七、Java 操作 Redis

1. 官方推荐客户端

  • Jedis、Lettuce、Redisson

2. SpringBoot整合(Spring Data Redis ------ 最常用)

  1. 引入依赖:spring-boot-starter-data-redis
  2. 核心类:RedisTemplate
  3. 操作分类
    • opsForValue():String
    • opsForHash():Hash
    • opsForList():List
    • opsForSet():Set
    • opsForZSet():ZSet
  4. 必须配置序列化器,防止key乱码

八、Redis 两种持久化方式(面试必考)

核心目的

Redis是内存数据库,宕机数据会丢失,持久化把数据存硬盘,重启恢复

1. RDB(Redis默认开启)

  • 原理:快照,保存某一时刻的全量数据
  • 触发方式
    • 手动:save(阻塞,禁用)、bgsave(后台子进程,推荐)
    • 自动:配置save 秒 次数,如save 60 10000
  • 优点:恢复速度快、适合备份
  • 缺点:不能实时持久化,可能丢数据

2. AOF(默认关闭,需手动开启)

  • 开启:appendonly yes
  • 原理:记录所有写命令,重启重放命令恢复数据
  • 三种同步策略
    • always:每次都同步(最安全,极慢)
    • everysec:每秒同步(推荐,平衡安全+性能)
    • no:系统自动同步(丢数据多)
  • AOF重写:精简命令,缩小文件体积
  • 优点:数据安全性高,最多丢1秒数据
  • 缺点:文件大、恢复比RDB慢

3. 数据恢复规则

优先加载AOF → AOF不存在,再加载RDB


九、核心总结

  1. Redis = 高性能内存型key-value数据库,主打缓存+高并发
  2. 必掌握:5种数据类型命令 + SpringBoot整合
  3. 面试重点:RDB快照、AOF日志、持久化区别
  4. 生产标配:AOF(每秒同步) + RDB,兼顾安全与备份

要不要我把这份笔记再整理成一页纸背诵版,方便你直接背面试题?

相关推荐
Java面试题总结2 小时前
Spring Boot 包扫描新姿势:AutoScan vs @Import vs @ComponentScan 深度对比
java·数据库·spring boot
人工干智能2 小时前
科普:pandas 中的类 SQL语句:transaction.groupby(“card_id“)[‘purchase_day‘].diff()
数据库·sql·pandas
梦想与想象-广州大智汇2 小时前
MySQL 同步数据到 ClickHouse 方案对比分析
数据库·mysql·clickhouse
雨墨✘2 小时前
如何解决SQL多表查询数据重复问题_使用DISTINCT与JOIN优化
jvm·数据库·python
却话巴山夜雨时i2 小时前
互联网大厂Java面试:从Spring Boot到Kafka的业务场景深度剖析
spring boot·redis·spring cloud·微服务·kafka·prometheus·java面试
u0107475463 小时前
JavaScript 递归调用栈深度解析与层级遍历陷阱详解
jvm·数据库·python
身如柳絮随风扬3 小时前
什么是缓存预热
java·spring·缓存
herinspace3 小时前
管家婆实用帖-如何使用ping命令检测网络环境
网络·数据库·人工智能·学习·excel·语音识别
星空椰3 小时前
Windows 安装 PostgreSQL 数据库
数据库·postgresql