天天看点

Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)

上一篇 :5. 基础知识

下一篇 :7. 三种特殊数据类型

文章目录

  • 1. 概述
  • 2. Redis-Key
  • 3. String(字符串)
  • 4. List (列表)
  • 5. Set (集合)
  • 6. Hash
  • 7. ZSet (有序集合)

1. 概述

Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 下面所说的命令都会很重要,以后在其他框架中使用,也同样需要这些命令。

2. Redis-Key

  • 官网中的命令:http://www.redis.cn/commands.html
  • 下面命令中 【XX】表示需要自己输入的
  • [XX] 表示选填
  1. 添加键值对
    set 【key】 【value】
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201020163803263.png#pic_center)
               
  2. 查看键对应的值
    get【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 查看当前库的所有键
    keys *
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 判断某个键是否存在
    EXISTS 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  5. 移除某个键值对
    move 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  6. 设置某键值对过期时间
    EXPIRE 【key】【seconds】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
    可以实现自定义的缓存
  7. 查看设置定时过期的属性的剩余时间
    ttl 【name】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  8. 查看某个键的值是什么类型的
    type 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)

3. String(字符串)

  1. 向已有的键的值后面追加字符串
    APPEND 【key】【追加的值】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 如果追加的值不存在,就会新建一个
  1. 获取字符串的长度
    STRLEN 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 实现 i++ 操作
    INCR 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 可以设置步长的自增
    INCRBY 【key】【步长】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 实现 i-- 的操作
    DECR 【key】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)

6. 设置步长的自减

> DECRBY 【key】【步长】
           
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 获得字符串范围
    GETRANGE 【key】【start】【end】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 替换字符串中的某一段
    SETRANGE 【key】【起始位置】【替换的值】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 新建一个值,并且直接设置过期时间
    SETEX【key】【second】【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 当某个值不存在则新建,存在则不新建
    SETNX 【key】【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 9、10 两条在分布式锁中会常常使用
  1. 同时设置多个值
    MSET 【key】【value】 [【key】【value】……]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 同时查询多个值
    MGET 【key】 [【key】……]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 多个值同时插入,当所有值不存在则新建,某一个存在则不新建
    MSETNX 【key】【value】 [【key】【value】……]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 存入一个 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 (有序集合)
  2. 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 开头的
  1. 插入值
    LPUSH 【key】 【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 获取列表的值
    LRANGE 【key】 【start】【end】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 从同尾部插入数据
    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 (有序集合)
  1. 移除一个元素

    从头部(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 (有序集合)
  2. 获取某个下标对应的值
    LINDEX 【key】【index】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 列表的长度
    LLEN 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 移除指定的值
    LREM 【key】【count】【元素】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 截断 List ,保留一部分
    LTRIM 【key】【start】【end】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 移除列表的最后一个元素,并且添加到另一个列表
    RPOPLPUSH 【source】【distinction】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 判断多个列表是否存在
    EXISTS 【key】[【key】……]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 向列表的指定下标插入值

    这个指定的下标原先必须有值

    LSET 【key】【index】【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 在指定元素的前/后插入值
    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 开头
  1. 插入一个值
    SADD 【key】【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 查询集合中所有元素
    SMEMBERS 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 判断集合中是否存在某值
    SISMEMBER 【key】【value】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 查询集合元素个数
    SCARD 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 取出集合中元素
    SREM 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 随机选取一个元素
    SRANDMEMBER 【key】[【count】]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 随机删除值
    SPOP 【key】[【count】]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 把一个指定的值移动到另一个集合中
    SMOVE 【source】【destination】【元素】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 多个集合的差集、交集、并集

    两个集合 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 开头
  1. 插入值

    HSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]

    HMSET 【key】 【字段名】【字段值】 [ 【字段名_N】【字段值_N】]

    这两效果一样

    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 取出值
    HGET 【key】【 field】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 同时获取多个值
HMGET 【key】【field1】[ 【field2】【field_N]
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 获取所有值
    HGETALL 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 删除指定的字段
    HDEL 【key】【field1】[【 field2】【field_N】]
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 查看 Hash 的长度
    HLEN 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 判断某个字段是否存在
HEXISTS 【key】【field】
Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  1. 只获取字段名
    HKEYS 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  2. 只获取所有的字段值
    HVALS 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 指定自增、自减
    HINCRBY 【key】【field】【步长】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  4. 如果存在就不能新建,不存在才能创建
    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 开头
  1. 添加数据
    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 (有序集合)
  2. 查询集合元素
    ZRANGE 【key】 【start】【 stop】[withscores]
    可选参数说明:
    • withscores:显示 score ,如果需要显示直接在后面加上这个单词即可
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  3. 升序排序
    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 (有序集合)
  4. 降序排序
    ZREVRANGE 【key】 【start】【end】[withscores]
    可选参数说明:
    • withscores:显示 score ,如果需要显示直接在后面加上这个单词即可
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  5. 移除指定元素
    ZREM 【key】【元素】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  6. 查询 ZSet 集合中元素个数
    ZCARD 【key】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  7. 统计 score 在某区间内的元素个数
    ZCOUNT 【key】 【min】【 max】
    Redis-狂神(6. 五大基本数据类型)学习笔记1. 概述2. Redis-Key3. String(字符串)4. List (列表)5. Set (集合)6. Hash7. ZSet (有序集合)
  • 实际应用:set 能做的这个也可以 ;排序 ;带权重
  • 比如:学生成绩排序 ; 排行榜 ;普通的消息 score 设为 1 ,紧急的消息设为 2 。

继续阅读