上一篇 :5. 基础知识
下一篇 :7. 三种特殊数据类型
文章目录
- 1. 概述
- 2. Redis-Key
- 3. String(字符串)
- 4. List (列表)
- 5. Set (集合)
- 6. Hash
- 7. ZSet (有序集合)
1. 概述

- 下面所说的命令都会很重要,以后在其他框架中使用,也同样需要这些命令。
2. Redis-Key
- 官网中的命令:http://www.redis.cn/commands.html
- 下面命令中 【XX】表示需要自己输入的
- [XX] 表示选填
- 添加键值对
set 【key】 【value】

- 查看键对应的值
get【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查看当前库的所有键
keys *
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 判断某个键是否存在
EXISTS 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 移除某个键值对
move 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 设置某键值对过期时间
EXPIRE 【key】【seconds】
可以实现自定义的缓存Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查看设置定时过期的属性的剩余时间
ttl 【name】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查看某个键的值是什么类型的
type 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
3. String(字符串)
- 向已有的键的值后面追加字符串
APPEND 【key】【追加的值】
- 如果追加的值不存在,就会新建一个
- 获取字符串的长度
STRLEN 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 实现 i++ 操作
INCR 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 可以设置步长的自增
INCRBY 【key】【步长】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 实现 i-- 的操作
DECR 【key】
6. 设置步长的自减
> DECRBY 【key】【步长】
- 获得字符串范围
GETRANGE 【key】【start】【end】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 替换字符串中的某一段
SETRANGE 【key】【起始位置】【替换的值】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 新建一个值,并且直接设置过期时间
SETEX【key】【second】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 当某个值不存在则新建,存在则不新建
SETNX 【key】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 9、10 两条在分布式锁中会常常使用
- 同时设置多个值
MSET 【key】【value】 [【key】【value】……]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 同时查询多个值
MGET 【key】 [【key】……]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 多个值同时插入,当所有值不存在则新建,某一个存在则不新建
MSETNX 【key】【value】 [【key】【value】……]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
-
存入一个 user 对象
方式一:
使用 JSON 字符串作为值存入
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) 方式二:
把对象的名字和属性名结合,整体作为键; 属性的值作为键的值。
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - getset 组合命令
GETSET 【key】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- String 类型的应用场景:
- 数字 :计数器
- 对象缓存存储
- ……
4. List (列表)
- 在 Redis 中可以利用 List 实现 栈、队列、阻塞队列。
- 所有的 List 命令都是 L / R 开头的
- 插入值
LPUSH 【key】 【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 获取列表的值
LRANGE 【key】 【start】【end】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 从同尾部插入数据
RPUSH 【key】 【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除一个元素
从头部(L)移除
LPOP 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) 从尾部(R)移除
RPOP 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 获取某个下标对应的值
LINDEX 【key】【index】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 列表的长度
LLEN 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除指定的值
LREM 【key】【count】【元素】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 截断 List ,保留一部分
LTRIM 【key】【start】【end】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 移除列表的最后一个元素,并且添加到另一个列表
RPOPLPUSH 【source】【distinction】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 判断多个列表是否存在
EXISTS 【key】[【key】……]
-
向列表的指定下标插入值
这个指定的下标原先必须有值
LSET 【key】【index】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 在指定元素的前/后插入值
LINSERT 【key】【before | after】【指定元素】【插入的值】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 小结
- List 实际上是一个双链表,所以可以在 left、right、指定 Node 前后插入值
- 如果 key 不存在,创建新的链表
- 如果 key 存在,新增内容
- 如果移除了所有值,空链表,也就没有用了,就移除了
- 从两边(left、right)插入或修改效率较高,从中间插入或修改效率较低
- 如果 从左边插入(LPUSH)、从右边读取(RPOP)那就是一个栈
- 如果 从左边插入(LPUSH)、从左边读取(LPOP)那就是一个队列
5. Set (集合)
- Set 中的值是不能重复的
- Set 相关的操作都是 S 开头
- 插入一个值
SADD 【key】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查询集合中所有元素
SMEMBERS 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 判断集合中是否存在某值
SISMEMBER 【key】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查询集合元素个数
SCARD 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 取出集合中元素
SREM 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 随机选取一个元素
SRANDMEMBER 【key】[【count】]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 随机删除值
SPOP 【key】[【count】]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 把一个指定的值移动到另一个集合中
SMOVE 【source】【destination】【元素】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) -
多个集合的差集、交集、并集
两个集合 set1 、set2
差集Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) SDIFF 【key1】【key2】 [【key_N】]
交集Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) SINTER 【key1】【key2】 [【key_N】]
并集Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) SUNION 【key1】【key2】 [【key_N】]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 举例 :微博等网站的关注用户 ;或者 QQ、微信的好友 都可以放在一个集合中。交集就可以得出共同关系或者共同好友 ; 差集/并集就可以做出推荐好友等功能。
6. Hash
- 类似 Map 集合 —— key= {key= value}
- Hash 的相关操作都以 H 开头
- 插入值
HSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]
或
HMSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]
这两效果一样
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 取出值
HGET 【key】【 field】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 同时获取多个值
HMGET 【key】【field1】[ 【field2】【field_N]
- 获取所有值
HGETALL 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 删除指定的字段
HDEL 【key】【field1】[【 field2】【field_N】]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查看 Hash 的长度
HLEN 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 判断某个字段是否存在
HEXISTS 【key】【field】
- 只获取字段名
HKEYS 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 只获取所有的字段值
HVALS 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 指定自增、自减
HINCRBY 【key】【field】【步长】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 如果存在就不能新建,不存在才能创建
HSETNX 【key】【field】【value】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 应用:Hash 用来存放经常变更数据、对象信息
- 比如可以存放一个对象 : user = {name ,age}
7. ZSet (有序集合)
- 在插入的时候可以增加一个 score 来进行分组排序
- ZSet 的相关操作都是 Z 开头
- 添加数据
ZADD 【key】 [ NX|XX ] [ CH ] [ INCR ] score member [score member …]
可选参数解释
- XX: 仅仅更新存在的成员,不添加新成员。
- NX: 不更新存在的成员。只添加新成员。
- CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。 所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,ZADD返回值只计算新添加成员的数量。
- INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作。
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查询集合元素
ZRANGE 【key】 【start】【 stop】[withscores]
可选参数说明:
- withscores:显示 score ,如果需要显示直接在后面加上这个单词即可
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 升序排序
ZRANGEBYSCORE 【key】【min】【max】[withscores]
可选参数说明:
- withscores:显示 score ,如果需要显示直接在后面加上这个单词即可
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 降序排序
ZREVRANGE 【key】 【start】【end】[withscores]
可选参数说明:
- withscores:显示 score ,如果需要显示直接在后面加上这个单词即可
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 移除指定元素
ZREM 【key】【元素】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 查询 ZSet 集合中元素个数
ZCARD 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合) - 统计 score 在某区间内的元素个数
ZCOUNT 【key】 【min】【 max】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
- 实际应用:set 能做的这个也可以 ;排序 ;带权重
- 比如:学生成绩排序 ; 排行榜 ;普通的消息 score 设为 1 ,紧急的消息设为 2 。