Redis的数据类型解读
目录
- String
- Redis String类型命令详解与优化指南
- 1. 基础操作
- 2. 批量操作
- 3. 数字增减
- 4. 有效期控制
- 命令对比速查表
- Key的层级模式
- Hash类型
- Redis Hash类型常见命令速查表
- Link类型
- Set类型
- SortSet类型
- 总结
String
以下是基于图片中 Redis String类型命令 的提取与优化整理,结合实用场景和注意事项,便于快速掌握核心用法:
Redis String类型命令详解与优化指南
1. 基础操作
命令 | 语法示例 | 作用 | 场景说明 |
SET | SET key value | 添加/修改键值对 | 缓存、简单数据存储 |
GET | GET key | 获取key对应的value | 读取缓存或配置 |
SETNX | SETNX key value | key不存在时才设置(原子操作) | 分布式锁、防重复提交 |
set get setnx
- setnx 如果key值不存在 才添加 如果存在 就不添加 这才是 真正的新增操作
- set 后面 跟nx 也可以实现
2. 批量操作
命令 | 语法示例 | 优势 |
MSET | MSET k1 v1 k2 v2 | 减少网络开销,批量写入 |
MGET | MGET k1 k2 | 批量读取,提升效率 |
mset
多量 添加/修改mget
多量 获取
3. 数字增减
命令 | 语法示例 | 说明 |
INCR | INCR key | 整数+1(如计数器) |
INCRBY | INCRBY key 5 | 指定步长(如+5) |
INCRBYFLOAT | INCRBYFLOAT key 0.5 | 浮点数增减(如库存调整) |
incr (auto-increment)
incrby
值改成 负的 就 是自减了incrbyfloat
浮点数增减
4. 有效期控制
命令 | 语法示例 | 用途 |
SETEX | SETEX key 60 "value" | 设置键值对并指定有效期(秒) |
PSETEX | PSETEX key 10000 "value" | 毫秒级有效期(精准控制) |
setex (ex =expire)
添加一个Key 并且 设置有效期
同样在后面加 ex 可以实现
psetex
命令对比速查表
需求 | 应选命令 | 替代方案 |
设置值并过期 | SETEX | SET +EXPIRE |
防覆盖写入 | SETNX | SET +NX 参数 |
浮点数计算 | INCRBYFLOAT | 客户端计算后SET |
Key的层级模式
在这里面就形成了层级结构
Hash类型
Redis Hash类型常见命令速查表
命令格式 | 功能描述 | 示例用法 |
HSET key field value | 设置/修改Hash键GVdfMdlM中指定字段的值 | HSEwww.devze.comT user:100 name "张三" |
HGET key field | 获取Hash键中指定字段的值 | HGET user:100 name → "张三" |
HMSET key field1 value1 [field2 value2...] | 批量设置多个字段值(Redis 4.0+建议改用HSET) | HMSET product:500 price 2999 stock 100 |
HMGET key field1 [field2...] | 批量获取多个字段的值 | HMGET user:100 name age |
HGETALL key | 获取Hash键中所有字段和值(返回交替显示的字段/值列表) | HGETALL user:100 |
HKEYS key | 获取Hash键中所有字段名 | HKEYS product:500 → ["price", "stock"] |
HVALS key | 获取Hash键中所有字段python值 | HVALS product:500 → ["2999", "100"] |
HINCRBY key field increment | 对指定字段值进行整数递增/递减(支持负数) | HINCRBY product:500 stock -5 |
HSETNX key field value | 仅当字段不存在时设置值(原子操作) | HSETNX user:100 ejavascriptmail "a@test.com" |
- Hset
相当于 一个 key 可以存放 多个哈希key 和 哈希value
- Hget
要同时指定 key 和 哈希key 才可以获得 哈希value
HMset 输入一个key 和一次性添加多个 哈希key 和 哈希value
HMget 输入一次key 一次性输入 多个 哈希key 去获得 多个 哈希value
HgetAll 输入一次key 获得所有 的哈希key 哈希value 依次返回
Hkeys 获得所有的哈希key
Hvals 获得所有的哈希value
HincrBy 指定 key 指定哈希key 选择增加的 数值
Hsetnx 指定key 和 哈希key 如果哈希key不存在 则添加 value 如果 存在 则添加失败
Link类型
List接近于 Java中的LinkedList
Lpush 向左推入元素 L是 left
先推入1 后 2 后3 所以顺序是 321
Rpush 向右推入元素 R是 right
Lpop 向左取出元素 并且删除该元素
Rpop 向右取出元素 并且删除该元素
Lrange 从左到右取出 范围内的数 并且不删除
BLpop 左 延迟等待 删除
阻塞方式 第三个参数是时间
如果表内不存在数据 就会等100s 去等
打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除
BRpop 右 延迟等待删除编程客栈
阻塞方式 第三个参数是时间
如果表内不存在数据 就会等100s 去等
打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除
Set类型
List接近于 Java中的LinkedList
Lpush 向左推入元素 L是 left
先推入1 后 2 后3 所以顺序是 321
Rpush 向右推入元素 R是 right
Lpop 向左取出元素 并且删除该元素
Rpop 向右取出元素 并且删除该元素
Lrange 从左到右取出 范围内的数 并且不删除
BLpop 左 延迟等待 删除
阻塞方式 第三个参数是时间
如果表内不存在数据 就会等100s 去等
打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除
BRpop 右 延迟等待删除
阻塞方式 第三个参数是时间
如果表内不存在数据 就会等100s 去等
打开第二个客户端去添加数据 然后第一个客户端就会 接收到然后删除
SortSet类型
Zadd 添加 注意的是 第一个是 key 然后 前面的数据是 score 后面的值是 value
它会自动按照score 分数排名 升序
Zrem (rem remove) key 为 stus 就是把value 为 Tom 的删除掉
Zrank (rank 排名)
它返回的排名 是从 0 开始的 0 1 2 所以 就是 2
Zrevrank (rev = reverse rank 排名)
倒序排序 从0开始 0 1 2 3 所以是 3
Zcard 获取所有元素总个数
Zcount 0 82 范围查询个数
ZincrBy (选择自增多少分 改成负的就减分了)
Zrange (查出这个范围的所有数据) 起始为0
Zrevrange 通过排序个数 范围查询 (rev = reverse range 范围) )
ZrangeByscore 通过分数范围查询 value
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论