Redis的五种数据类型及对应的命令详解

Redis 的五种数据类型

1. 五种数据类型
  • 字符串(STRING):数据存储结构可以是字符串、整数、浮点数
  • 列表(LIST):数据结构双向链表,每个节点是字符串。
  • 集合(SET):数据结构哈希表,每个节点是字符串且不能重复。
  • 散列(HASH):数据结构哈希表,类似一个小型的 redis 字符串类型,以 key-value 的形式存储。
  • 有序集合(ZSET):数据结构哈希表,和无序集合相似,但有序集合每个节点都会关联一个分值,分值为浮点数,并根据该分值进行排序。
2. 字符串(STRING)常用命令
  • GET:获取一个键的值,当不存在时返回(nil)

    在这里插入图片描述
  • SET:SET 命令在 redis 4.0 中,参数如下:SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
    EX seconds:设置键值过期时间,单位秒,SETEX 命令相当于该参数用法。
    PX milliseconds:设置键值过期时间,单位毫秒。
    NX:当键值不存在时才能设置,存在原子性,SETNX 命令相当于该参数用法。
    XX:当键值存在是才可设置。
    在这里插入图片描述
  • DEL:移除一个键值,支持移除多个键值。
    在这里插入图片描述
  • INCR:对整数值加1,并返回运算后的结果,非整数类型报错。
    在这里插入图片描述
  • DECR:对整数值减1,并返回运算后的结果,非整数值类型报错。
    在这里插入图片描述
  • INCRBY:对整数值加上一个整数,并返回运算后的结果,非整数值类型报错。
    在这里插入图片描述
  • DECRBY:对整数值减去一个整数,并返回运算后的结果,非整数值类型报错。
  • INCRBYFLOAT:对数值加上一个浮点数,并返回运算后的结果,非数值类型报错。
    在这里插入图片描述
    注:需要注意的是这里没有 DECRBYFLOAT 命令,可以用 INCRBYFLOAT 加上一个负数来实现
  • APPEND:字符串追加,拼接到已有字符串尾部,不存在则新增
    在这里插入图片描述
  • GETRANGE:字符串截取,在 redis 2.x 中为 SUBSTR ,包含 end 下标。
    在这里插入图片描述
  • SETRANGE:字符串改写,覆盖 offset 开始(包含offset),value 长度的字符串。
    在这里插入图片描述
  • STRLEN:返回键值长度。
    在这里插入图片描述
3. 列表(LIST)常用命令
  • LPUSH:将一个或多个字符串插入列表左(头)部,不存在列表则新增一个列表。
    在这里插入图片描述
  • LPUSHX:将一个或多个字符串插入列表左(头)部,不存在列表则无法新增。
  • RPUSH:将一个或多个字符串插入列表右(尾)部,不存在列表则新增一个列表。
    在这里插入图片描述
  • RPUSHX:将一个或多个字符串插入列表右(尾)部,不存在列表则无法新增。
  • LINDEX:获取列表指定位置的元素。
    在这里插入图片描述
  • LREM:从key对应list中删除count个和value相同的元素。count为0时候删除全部,count为正,则删除匹配count个元素,如果为负数,则是从右侧扫描删除匹配count个元素。
    在这里插入图片描述
  • LPOP:从左(头)部弹出一个元素。
    在这里插入图片描述
  • RPOP:从右(尾)部弹出一个元素。
  • LRANGE:查询指定下标范围的数据,包含 end 下标,end 为 -1 时代表返回列表剩余所有数据。可用于分页。
    在这里插入图片描述
  • LTRIM:列表修剪,将列表 start end 下标(包含 start end)范围内的数据保留,其余删除。
    在这里插入图片描述
  • BLPOP:从左(头)部弹出一个元素,若元素不存在则阻塞等待。
  • BRPOP:从右(尾)部弹出一个元素,若元素不存在则阻塞等待。
    BLPOP 和 BRPOP 可用于实现消息队列。虽然现在各类 MQ 中间件已经十分丰富,功能也愈发强大完善,但有时候我们需求较为简单时,可考虑使用 redis 简单实现,redis 也支持发布订阅模式。
4. 集合(SET)常用命令
  • SADD:将一个或多个元素加入集合,元素值重复则覆盖,若集合不存在则新建集合并加入。
    在这里插入图片描述
  • SMEMBERS:返回集合中的所有元素。
  • SISMEMBER:判断某个元素是否存在于集合中。
    在这里插入图片描述
  • SREM:将一个或多个元素从集合中移除。
    在这里插入图片描述
  • SCARD:返回集合中元素数量。
    在这里插入图片描述
  • SRANDMEMBER:随机返回集合中的一个或指定数量的元素。
    在这里插入图片描述
  • SPOP:随机弹出集合中的一个或指定数量的元素。
    在这里插入图片描述
  • SMOVE:将指定元素从一个集合移动到另外一个集合。
    在这里插入图片描述
  • SDIFF:返回第一个集合和其他集合取差集后的元素。
    在这里插入图片描述
  • SDIFESTORE:将和其他集合取差集的结果写入目标集合。
    在这里插入图片描述
  • SINTER:返回第一个集合和其他集交取并集后的元素。
  • SINTERSTORE:将和其他集合取交集的结果写入目标集合。
  • SUNION:返回第一个集合和其他集合取并集后的元素。
  • SUNIONSTORE:将和其他集合取并集的结果写入目标集合。
5. 散列(HASH)常用命令
  • HSET:对一个散列设置键值,存在则覆盖。
    在这里插入图片描述
  • HGET:获取一个键的值。
  • HDEL:移除一个或多个键值
    在这里插入图片描述
  • HGETALL:获取一个散列的所有键值。
    在这里插入图片描述
  • HMGET:根据多个 key 获取散列的值。
    在这里插入图片描述
  • HMSET:对一个散列设置多个个键值。
    在这里插入图片描述
  • HLEN:获取一个散列的键值数量。
    在这里插入图片描述
  • HEXISTS:判断一个散列中是否存在某个键。
    在这里插入图片描述
  • HKEYS:获取一个散列的所有 key。
    在这里插入图片描述
  • HVALS:获取一个散列的所有值。
    在这里插入图片描述
  • HINCRBY:对一个散列值为整型的值添加一个整数,非整数则报错。
    在这里插入图片描述
  • HINCRBYFLOAT:对一个散列值为数值类型的值添加一个浮点数,非数值则报错。
    这里需要注意的是相比于 redis 的 DECRBY 散列并不提供 HDECRBY 的命令,如果需要做减法,可以用 HINCRBY 加上一个负数来实现。
6. 有序集合(ZSET)常用命令
  • ZADD:对一个有序集合设置多个元素和排序的分数,分数可以为整型或者浮点型,支持通过 INCR 参数将命令转为 ZINCRBY。ZADD 参数较多,完整命令参数如下为 ZADD key [NX|XX] [CH] [INCR] score member [score member …],参数详解如下:
    XX: 仅仅更新存在的成员,不添加新成员。
    NX: 不更新存在的成员。只添加新成员。
    CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。 所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,ZADD返回值只计算新添加成员的数量。
    INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作。
    在这里插入图片描述
  • ZREM:通过多个元素批量移除。
    在这里插入图片描述
  • ZRANGE:根据排名获取集合内的元素,包含起始和终止排名位置的元素,如果传入参数 WITHSCORES 将连同分值一同返回。
    在这里插入图片描述
  • ZRANGEBYSCORE:根据分值获取集合内的元素,包含起始和终止数值的元素,如果传入参数 WITHSCORES 将连同分值一同返回,支持参数 LIMIT 用于分页,分页参数为 offset (偏移位置),count (要获取的数量),可用于分页查找。
    在这里插入图片描述
  • ZCARD:获取集合内元素数量。
    在这里插入图片描述
  • ZINCRBY:对集合内的元素分值添加一个浮点数,不存在的元素则新增。
    在这里插入图片描述
  • ZCOUNT:根据分值统计分值内的元素数量,包含分值的最大和最小值。
    在这里插入图片描述
  • ZRANK:获取某个元素在集合内的排名。
    在这里插入图片描述
  • ZSCORE:获取某个元素在集合内的分值。
    在这里插入图片描述
  • ZREVRANK:倒序(从大到小)获取某个元素在集合内的排名。
    在这里插入图片描述
  • ZREVRANGE:根据排名倒序(从大到小)获取集合内的元素,包含起始和终止排名位置的元素,如果传入参数 WITHSCORES 将连同分值一同返回。
  • ZREVRANGEBYSCORE:根据分值获取集合内的元素并倒序(从大到小)输出,包含起始和终止数值的元素,如果传入参数 WITHSCORES 将连同分值一同返回,支持参数 LIMIT 用于分页,分页参数为 offset (偏移位置),count (要获取的数量),可用于分页查找。
  • ZREMRANGEBYRANK:根据排名移除集合内的元素,包含起始和终止位置的排名。
    在这里插入图片描述
  • ZREMRANGEBYSCORE:根据分值移除集合内的元素,包含最小和最大的分值本身。
    在这里插入图片描述
  • ZINTERSTORE:将多个集合取交集后经过权重(比例)运算,再根据指定的求和、最大值、最小值函数,将结果写入目标集合。该命令完整参数 ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 参数介绍如下:
    destination:指定结果集保存的集合。
    numkeys key [key …]:numkeys 指定有多少个集合参与交集运算(之所以需要该参数,猜测是由于 redis 的其余参数干扰), key 指定参与交集运算的集合。
    [WEIGHTS weight [weight …]]:指定参与交集运算各集合 score 的权重(比例)参数,即乘积。
    [AGGREGATE SUM|MIN|MAX]: 指定交集中元素的 score 的运算函数,例如:SUM 等于各集合中该元素的 score 乘以权重后求和。
    在这里插入图片描述
  • ZUNIONSTORE:将多个集合取并集后经过权重(比例)运算,再根据指定的求和、均值、最大值、最小值函数,将结果写入目标集合。该命令完整参数 ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX],详解同上。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值