md_files/自学/Redis.md

109 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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数据类型
<img src="https://pic.bitday.top/i/2025/03/19/u7ckos-2.png" alt="image-20221130190150749" style="zoom:50%;" />
**解释说明:**
- 字符串(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 获取哈希表中所有值
<img src="https://pic.bitday.top/i/2025/03/19/u7cyeg-2.png" alt="image-20221130193121969" style="zoom:67%;" />
### 列表操作
Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:
- **LPUSH** key value1 [value2] 将一个或多个值插入到列表头部
- **LRANGE** key start stop 获取列表指定范围内的元素
- **RPOP** key 移除并获取列表最后一个元素
- **LLEN** key 获取列表长度
- **BRPOP** key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止
<img src="https://pic.bitday.top/i/2025/03/19/u7cqgp-2.png" alt="image-20221130193332666" style="zoom:67%;" />
### 集合操作
Redis set 是string类型的无序集合。集合成员是唯一的这就意味着集合中不能出现重复的数据常用命令
- **SADD** key member1 [member2] 向集合添加一个或多个成员
- **SMEMBERS** key 返回集合中的所有成员
- **SCARD** key 获取集合的成员数
- **SINTER** key1 [key2] 返回给定所有集合的交集
- **SUNION** key1 [key2] 返回所有给定集合的并集
- **SREM** key member1 [member2] 移除集合中一个或多个成员
<img src="https://pic.bitday.top/i/2025/03/19/u7d7ff-2.png" alt="image-20221130193532735" style="zoom:67%;" />
### 有序集合
Redis有序集合是string类型元素的集合且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令
常用命令:
- **ZADD** key score1 member1 [score2 member2] 向有序集合添加一个或多个成员score代表分数
- **ZRANGE** key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员
- **ZINCRBY** key increment member 有序集合中对指定成员的分数加上**增量** increment
- **ZREM** key member [member ...] 移除有序集合中的一个或多个成员
<img src="https://pic.bitday.top/i/2025/03/19/u7c9il-2.png" alt="image-20221130193951036" style="zoom:67%;" />
### 通用命令
Redis的通用命令是不分数据类型的都可以使用的命令
- KEYS pattern 查找所有符合给定模式( pattern)的 key
- EXISTS key 检查给定 key 是否存在
- TYPE key 返回 key 所储存的值的类型
- DEL key 该命令用于在 key 存在是删除 key