Redis 学习笔记
更新: 7/22/2025 字数: 0 字 时长: 0 分钟
1. Redis 简介
Redis(Remote Dictionary Server)是一个开源的、使用 C 语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
1.1. 特点
- 速度快:数据存储在内存中,读写速度非常快。
- 持久化:支持 RDB 和 AOF 两种持久化方式,保证数据在服务重启后不丢失。
- 丰富的数据类型:支持 String、Hash、List、Set、Sorted Set 等多种数据类型。
- 原子性操作:所有操作都是原子性的,支持事务。
- 发布/订阅:支持发布/订阅模式,可以用于消息队列。
- 高可用:支持主从复制和哨兵(Sentinel)机制,实现高可用。
2. 数据类型
2.1. String(字符串)
- 介绍:最基本的数据类型,可以存储字符串、整数或浮点数。
- 常用命令:
SET key value
:设置指定 key 的值。GET key
:获取指定 key 的值。INCR key
:将 key 中储存的数字值增一。DECR key
:将 key 中储存的数字值减一。
2.2. Hash(哈希)
- 介绍:一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象。
- 常用命令:
HSET key field value
:将哈希表 key 中的字段 field 的值设为 value。HGET key field
:获取存储在哈希表中指定字段的值。HGETALL key
:获取在哈希表中指定 key 的所有字段和值。
2.3. List(列表)
- 介绍:简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
- 常用命令:
LPUSH key value1 [value2]
:将一个或多个值插入到列表头部。RPUSH key value1 [value2]
:将一个或多个值插入到列表尾部。LPOP key
:移出并获取列表的第一个元素。RPOP key
:移出并获取列表的最后一个元素。LRANGE key start stop
:获取列表指定范围内的元素。
2.4. Set(集合)
- 介绍:String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
- 常用命令:
SADD key member1 [member2]
:向集合添加一个或多个成员。SMEMBERS key
:返回集合中的所有成员。SISMEMBER key member
:判断 member 元素是否是集合 key 的成员。
2.5. Sorted Set(有序集合)
- 介绍:和 Set 一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
- 常用命令:
ZADD key score1 member1 [score2 member2]
:向有序集合添加一个或多个成员,或者更新已存在成员的分数。ZRANGE key start stop [WITHSCORES]
:通过索引区间返回有序集合成指定区间内的成员。ZREVRANGE key start stop [WITHSCORES]
:返回有序集中指定区间内的成员,通过索引,分数从高到低。
3. 持久化
3.1. RDB (Redis Database)
- 介绍:在指定的时间间隔内生成数据集的时间点快照。
- 优点:
- 适合用于备份。
- 恢复速度快。
- 缺点:
- 如果服务器宕机,会丢失最后一次快照之后的数据。
3.2. AOF (Append Only File)
- 介绍:以日志的形式记录服务器所处理的每一个写操作。
- 优点:
- 数据更完整,丢失数据的风险更小。
- 缺点:
- 文件体积更大。
- 恢复速度比 RDB 慢。