(一)Redis 是什么?
(一)Redis 是什么?
Redis 这个从我 17 年实习开始就听过的中间件,日常项目也有在使用,但从没有整体的了解过。趁着现在有空闲时间,借助 AI 工具的便利,将 Redis 拆开了揉碎了学习一下。
Redis 简介:它是什么,有什么用?
维基百科介绍:redis
Redis(Remote Dictionary Server) 是一个开源的内存数据结构存储系统,可以用作数据库、缓存、消息代理和流处理器。
它由意大利开发者 Salvatore Sanfilippo 创建,最早发布于 2009 年,目前由 Redis Inc.(前身 Redis Labs)主导维护,源码托管在 GitHub 上,使用 C 语言开发,性能极高。
Redis 的核心特点
数据存储到内存中,读写速度极快,可以达到 10w QPS
支持丰富的数据结构
- Set 集合
- List 累表
- Sort Set 有序集合
- Hash 哈希表
- String 字符串
数据支持持久化
- RDB [Redis DateBase](快照)
- AOF [Apply Only File](追加日志)
持久化方式 是否默认 优点 缺点 RDB 否 可读性高:存储的是一条条执行的命令,所以可以从任何一个时间节点进行数据恢复 文件体积大,恢复速度慢,对磁盘的 IO 依赖较高 AOF 是 文件体积小,恢复速度快 快照形式保存,容易造成数据丢失。存储的是二进制文件,可读性低 多种高可用拓展方式
主从复制
哨兵模式(自动故障迁移)
Cluster 模式(集群)支持大规模部署与数据分片
支持事务和 lua 脚本
轻量级、开源、跨平台
Redis 和 Memcached 对比
| 对比项 | redis | memcached |
|---|---|---|
| 数据结构 | 五种数据结构 | 只支持 String,但是支持其他类型数据比如 图片等 |
| 数据持久化 | 支持 AOF 和 RDB | 不支持数据持久化 |
| 过期策略 | 支持数据提交后修改 | 数据创建时设置,不支持修改 |
| 发布订阅 | 支持 | 不支持 |
| 脚本操作 | 支持 Lua 脚本 | 不支持 |
| 原子操作 | 可以基于 Lua脚本编写丰富的操作 | 基础原子性操作 |
Redis 的常见应用场景
- 缓存系统:页面、热点数据缓存
- 分布式锁:基于 SETNX + 过期时间实现
- 计数系统:使用 INCR 和 DECR 实现
- 排行榜数据缓存: 使用 有序的 SET 实现
- 消息队列: 基于 List 或者 Stream 实现
- 会话共享: 在分布式系统中共享登录状态信息
快速上手 Redis
如何安装:文档
常见 Docker 安装:
1
docker run -p 6379:6379 redis
客户端连接:
redis-cli基础命令:SET、GET、DEL、EXPIRE 等