day05 Redis 学习笔记(完整版)
一、今日学习目标
- 理解Redis简介与核心优势
- 掌握Redis5种核心数据类型及常用命令
- 学会Java代码操作Redis
- 掌握RedisRDB+AOF两种持久化方式(高频面试题)
二、Redis简介
- 定义 :开源免费、高性能的key-value型NoSQL数据库,C语言开发,QPS可达10万+
- 三大特点
- 支持数据持久化,重启不丢数据
- 支持5种丰富数据结构
- 支持主从备份(master-slave)
- 核心使用场景
- 缓存(最常用)、排行榜、计数器
- 社交网络(点赞/关注)、消息队列
- 存储热点数据(商品、新闻、资讯)
- 补充
- NoSQL:非关系型数据库,是关系型数据库(MySQL/Oracle)的补充,不是替代
三、Redis核心优势
- 性能极高:读≈11万次/秒,写≈8.1万次/秒
- 数据类型丰富:String/Hash/List/Set/ZSet
- 原子性:所有操作要么全成功,要么全失败
- 特性齐全:发布订阅、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(字符串)------最基础
-
常用命令
bashset key value # 新增/修改 setex key 秒 value # 带过期时间 mset k1 v1 k2 v2 # 批量设置 get key # 查询 append key value # 追加 del key # 删除 keys * # 查看所有key ttl key # 查看过期时间
2. Hash(哈希)------存对象/键值对
-
适用:存用户信息、商品详情
-
常用命令
bashhset key field value # 单个赋值 hget key field # 单个查询 hgetall key # 查询所有字段+值 hdel key field # 删除字段
3. List(列表)------有序可重复
-
适用:队列、消息、顺序列表
-
常用命令
bashlpush key value # 左侧添加 rpush key value # 右侧添加 lrange key 0 -1 # 查询所有 lset key index val # 修改指定索引 lpop/rpop key # 左侧/右侧弹出
4. Set(集合)------无序不可重复
-
适用:去重、共同关注、好友推荐
-
常用命令
bashsadd key value # 添加 smembers key # 查询所有 srem key value # 删除
5. ZSet(有序集合)------按分数排序
-
适用:排行榜、热度排序
-
常用命令
bashzadd key score value # 添加(带分数) zrange key 0 -1 # 查询排序结果 zrem key value # 删除
七、Java 操作 Redis
1. 官方推荐客户端
- Jedis、Lettuce、Redisson
2. SpringBoot整合(Spring Data Redis ------ 最常用)
- 引入依赖:
spring-boot-starter-data-redis - 核心类:
RedisTemplate - 操作分类
opsForValue():StringopsForHash():HashopsForList():ListopsForSet():SetopsForZSet():ZSet
- 必须配置序列化器,防止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
九、核心总结
- Redis = 高性能内存型key-value数据库,主打缓存+高并发
- 必掌握:5种数据类型命令 + SpringBoot整合
- 面试重点:RDB快照、AOF日志、持久化区别
- 生产标配:AOF(每秒同步) + RDB,兼顾安全与备份
要不要我把这份笔记再整理成一页纸背诵版,方便你直接背面试题?