redis八股文
1 | # Redis 基础使用 |
2. Hash
1 | hset user name Alice |
PS:
user
在这里是表名,name
是 key。
3. List
1 | lpush queue task |
PS:
-1
表示倒数第一个,lrange queue 0 -1
表示遍历从0
到最后一个元素。
4. Set
1 | sadd myset a |
5. Sorted Set
1 | zadd scores 100 Alice |
PS: 有序集合插入时需要提供权重值,
withscores
表示按照权重遍历。
配置文件位置
- 配置文件路径:
/etc/redis/redis.conf
- 修改配置后需要重启 Redis:
1
sudo systemctl restart redis
- 该配置文件可用于编辑 持久化 设置。
Redis 持久化
1. RDB 快照持久化(保存数据到磁盘)
1 | save 900 1 # 900 秒(15 分钟)至少有 1 次写入操作,就保存 RDB |
2. AOF 日志持久化
1 | appendonly yes # 启用 AOF |
Redis 使用场景
-
缓存
- 存储常用数据,如页面渲染等。
-
实时系统
- 统计网站点击率、实时排行榜、点赞功能等。
-
消息队列
- 使用
List
和Pub/Sub
可实现轻量级消息队列。
- 使用
-
分布式锁
- 本质上与消息队列功能类似,可用于分布式环境下的锁管理。
-
计数器
- Redis 具有原子操作能力,适合作为计数器,例如在线人数统计等。
Redis 为什么这么快?
- 数据存储在内存(而非磁盘)。
- 使用高效的数据结构 进行数据存储和查找。
- 单线程 + I/O 多路复用,避免了多线程的上下文切换,提高性能。
为什么 Redis 采用单线程?
- Redis 的瓶颈不在 CPU,而在 网络 I/O 和键值对操作,因此使用单线程处理请求。
- 持久化等操作由后台线程完成,并不会影响主线程的处理性能。
Redis 跳表实现
(略)
Redis 和 Memcached 的区别
特性 | Redis | Memcached |
---|---|---|
数据类型 | 丰富(String、Hash、List、Set、Sorted Set) | 仅支持键值对(K-V) |
持久化 | 支持(RDB、AOF) | 不支持 |
事务 | 支持(但不支持回滚) | 不支持 |
内存占用 | 较高 | 较低 |
速度 | 快 | 更快 |
使用场景 | 多种(缓存、队列、分布式锁等) | 主要用于缓存 |
Redis 事务 vs MySQL 事务
- Redis 事务本质上是 多个命令的原子性执行,执行期间不会被打断。
- 但 Redis 不支持事务回滚,一旦执行,无法撤销。
PS:
-1
表示倒数第一个,范围遍历0
到最后一个元素。
PS:user
在这里是表名,name
是 key。
评论