2025-03-18 12:46:59 +08:00
|
|
|
|
# Redis
|
|
|
|
|
|
|
|
|
|
Redis是一个基于**内存**的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的**存储中间件**。
|
|
|
|
|
|
|
|
|
|
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的**NoSql数据库**(非关系型)。
|
|
|
|
|
|
|
|
|
|
**主要特点:**
|
|
|
|
|
|
|
|
|
|
- 基于内存存储,读写性能高
|
|
|
|
|
- 适合存储热点数据(热点商品、资讯、新闻)
|
|
|
|
|
- 企业应用广泛
|
|
|
|
|
|
|
|
|
|
**服务启动/停止:**
|
|
|
|
|
|
|
|
|
|
redis-server.exe redis.windows.conf
|
|
|
|
|
|
|
|
|
|
ctrl+c
|
|
|
|
|
|
|
|
|
|
**客户端连接:**
|
|
|
|
|
|
|
|
|
|
redis-cli.exe (本地)
|
|
|
|
|
|
|
|
|
|
redis-cli.exe -h localhost -p 6379 -a 123456 (指定连接)
|
|
|
|
|
|
|
|
|
|
exit
|
|
|
|
|
|
|
|
|
|
## Redis数据类型
|
|
|
|
|
|
2025-03-19 18:16:24 +08:00
|
|
|
|
<img src="D:/folder/study/md_files/output/ebc9fa82-1269-49dc-9510-7e3d713b6058.png" alt="image-20221130190150749" style="zoom:50%;" />
|
2025-03-18 12:46:59 +08:00
|
|
|
|
|
|
|
|
|
**解释说明:**
|
|
|
|
|
|
|
|
|
|
- 字符串(string):普通字符串,Redis中最简单的数据类型
|
|
|
|
|
- 哈希(hash):也叫散列,类似于Java中的HashMap结构。(套娃)
|
|
|
|
|
- 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
|
|
|
|
|
- 集合(set):无序集合,没有重复元素,类似于Java中的HashSet(求交集)
|
|
|
|
|
- 有序集合(sorted set/zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素(排行榜)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Redis常用命令
|
|
|
|
|
|
|
|
|
|
### 字符串
|
|
|
|
|
|
|
|
|
|
Redis 中字符串类型常用命令:
|
|
|
|
|
|
|
|
|
|
- **SET** key value 设置指定key的值
|
|
|
|
|
- **GET** key 获取指定key的值
|
|
|
|
|
- **SETEX** key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒(验证码)
|
|
|
|
|
- **SETNX** key value 只有在 key 不存在时设置 key 的值
|
|
|
|
|
|
|
|
|
|
### 哈希操作
|
|
|
|
|
|
|
|
|
|
Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象,常用命令:
|
|
|
|
|
|
|
|
|
|
- **HSET** key field value 将哈希表 key 中的字段 field 的值设为 value
|
|
|
|
|
- **HGET** key field 获取存储在哈希表中指定字段的值
|
|
|
|
|
- **HDEL** key field 删除存储在哈希表中的指定字段
|
|
|
|
|
- **HKEYS** key 获取哈希表中所有字段
|
|
|
|
|
- **HVALS** key 获取哈希表中所有值
|
|
|
|
|
|
2025-03-19 18:16:24 +08:00
|
|
|
|
<img src="D:/folder/study/md_files/output/d09f0172-aed7-4e68-9abd-f3ac9dd7a063.png" alt="image-20221130193121969" style="zoom:67%;" />
|
2025-03-18 12:46:59 +08:00
|
|
|
|
|
|
|
|
|
### 列表操作
|
|
|
|
|
|
|
|
|
|
Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:
|
|
|
|
|
|
|
|
|
|
- **LPUSH** key value1 [value2] 将一个或多个值插入到列表头部
|
|
|
|
|
- **LRANGE** key start stop 获取列表指定范围内的元素
|
|
|
|
|
- **RPOP** key 移除并获取列表最后一个元素
|
|
|
|
|
- **LLEN** key 获取列表长度
|
|
|
|
|
- **BRPOP** key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止
|
|
|
|
|
|
2025-03-19 18:16:24 +08:00
|
|
|
|
<img src="D:/folder/study/md_files/output/95d66eec-0e52-4abc-8f38-42cd7160aa3e.png" alt="image-20221130193332666" style="zoom:67%;" />
|
2025-03-18 12:46:59 +08:00
|
|
|
|
|
|
|
|
|
### 集合操作
|
|
|
|
|
|
|
|
|
|
Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:
|
|
|
|
|
|
|
|
|
|
- **SADD** key member1 [member2] 向集合添加一个或多个成员
|
|
|
|
|
- **SMEMBERS** key 返回集合中的所有成员
|
|
|
|
|
- **SCARD** key 获取集合的成员数
|
|
|
|
|
- **SINTER** key1 [key2] 返回给定所有集合的交集
|
|
|
|
|
- **SUNION** key1 [key2] 返回所有给定集合的并集
|
|
|
|
|
- **SREM** key member1 [member2] 移除集合中一个或多个成员
|
|
|
|
|
|
2025-03-19 18:16:24 +08:00
|
|
|
|
<img src="D:/folder/study/md_files/output/948235d7-c37c-4dc2-ab0c-ef579fdfa911.png" alt="image-20221130193532735" style="zoom:67%;" />
|
2025-03-18 12:46:59 +08:00
|
|
|
|
|
|
|
|
|
### 有序集合
|
|
|
|
|
|
|
|
|
|
Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:
|
|
|
|
|
|
|
|
|
|
常用命令:
|
|
|
|
|
|
|
|
|
|
- **ZADD** key score1 member1 [score2 member2] 向有序集合添加一个或多个成员(score代表分数)
|
|
|
|
|
- **ZRANGE** key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员
|
|
|
|
|
- **ZINCRBY** key increment member 有序集合中对指定成员的分数加上**增量** increment
|
|
|
|
|
- **ZREM** key member [member ...] 移除有序集合中的一个或多个成员
|
|
|
|
|
|
2025-03-19 18:16:24 +08:00
|
|
|
|
<img src="D:/folder/study/md_files/output/72a176d7-a4c0-4642-a680-5b3cf7cb937a.png" alt="image-20221130193951036" style="zoom:67%;" />
|
2025-03-18 12:46:59 +08:00
|
|
|
|
|
|
|
|
|
### 通用命令
|
|
|
|
|
|
|
|
|
|
Redis的通用命令是不分数据类型的,都可以使用的命令:
|
|
|
|
|
|
|
|
|
|
- KEYS pattern 查找所有符合给定模式( pattern)的 key
|
|
|
|
|
- EXISTS key 检查给定 key 是否存在
|
|
|
|
|
- TYPE key 返回 key 所储存的值的类型
|
|
|
|
|
- DEL key 该命令用于在 key 存在是删除 key
|