Skip to content

Garnet 数据结构

Hash

HDEL

Syntax

bash
    HDEL key field [field ...]

从存储在 key 处的哈希中删除指定字段。 该哈希中不存在的指定字段将被忽略。如果 key 不存在,则将其视为空哈希,并且此命令返回 0。


HEXISTS

Syntax

bash
    HEXISTS key field

如果 field 是存储在key处的哈希中的现有字段,则返回。


HGET

Syntax

bash
    HGET key field

返回与存储在key处的哈希中的字段关联的值。


HGETALL

Syntax

bash
    HGETALL key

返回存储在key处的哈希的所有字段和值。在返回值中,每个字段名称后面都跟着它的值,因此回复的长度是哈希大小的两倍。


HINCRBY

Syntax

bash
    HINCRBY key field increment

按增量增加存储在key处的散列中存储在字段中的数字。如果key不存在,则会创建一个包含哈希值的新key。如果字段不存在,则在执行操作之前该值将设置为 0。 HINCRBY 支持的值范围仅限于 64 位有符号整数。


HINCRBYFLOAT

Syntax

bash
    HINCRBYFLOAT key field increment

将存储在key 处并表示浮点数的哈希的指定字段增加指定的增量。如果增量值为负,则结果是哈希字段值减少而不是增加。如果该字段不存在,则在执行操作之前将其设置为 0。如果发生以下情况之一,则返回错误:

  • 该字段包含错误类型的值(不是字符串)。
  • 当前字段内容或指定增量不可解析为双精度浮点数。

HKEYS

Syntax

bash
    HKEYS key

返回存储在 key 处的哈希中的所有字段名称。


HLEN

Syntax

bash
    HLEN key

返回 key 处存储的哈希中包含的字段数。


HMGET

Syntax

bash
    HMGET key field [field ...]

返回与 key 处存储的哈希中指定字段关联的值。

对于哈希中不存在的每个字段,返回 nil 值。由于不存在的键被视为空哈希,因此针对不存在的键运行 HMGET将返回 nil 值列表。

HMSET

Syntax

bash
    HMSET key field value [field value ...]

已弃用,支持具有多个字段值对的 HSET。

将指定字段设置为其存储在key处的哈希中各自的值。此命令将覆盖哈希中已存在的任何指定字段。如果key不存在,则会创建一个包含哈希值的新key


HRANDFIELD

Syntax

bash
    HRANDFIELD key [count [WITHVALUES]]

当仅使用 key 参数调用时,从存储在 key 处的哈希值返回一个随机字段。

如果提供的计数参数为正,则返回不同字段的数组。数组的长度是 count 或哈希的字段数 (HLEN), 以较小者为准。

如果使用负计数调用,则行为会发生变化,并且允许该命令多次返回同一字段。在这种情况下,返回的字段数是指定计数的绝对值。

可选的 WITHVALUES 修饰符更改回复,使其包含随机选择的哈希字段的相应值。


HSCAN

Syntax

bash
    HSCAN key cursor [MATCH pattern] [COUNT count]

迭代存储在给定key处的哈希的字段和值。与 SSCANZSCAN 命令相同, HSCAN 用于增量迭代哈 set* 的元素

match 参数允许在从集合中检索元素后对元素应用过滤器。 count 选项设置从服务器返回到此命令的最大项目数的限制。此限制还与全局服务器设置的 object-scan-count-limit 一起设置。


HSET

Syntax

bash
    HSET key field value

将指定字段设置为其存储在key处的哈希中各自的值。此命令会覆盖哈希中存在的指定字段的值。如果key不存在,则会创建一个包含哈希值的新key


HSETNX

Syntax

bash
    HSETNX key field value

仅当字段尚不存在时,才将存储在key处的哈希中的字段设置为值。如果key不存在,则会创建一个包含哈希值的新key。如果字段已经存在,则此操作无效。


HVALS

Syntax

bash
    HVALS key

返回存储在key处的哈希中的所有值。


List

LINDEX

Syntax

bash
    LINDEX key index

删除存储在key的列表中索引 index 处的元素。该索引是从零开始的。负索引可用于指定从列表尾部开始的元素


LINSERT

Syntax

bash
    LINSERT key BEFORE|AFTER pivot element

在以中心点位置元素(pivot)之前或者之后插入元素。当key不存在时,认为是空列表,不进行任何操作。


LLEN

Syntax

bash
    LLEN key

返回存储在 key 处的列表的长度。如果 key 不存在,则将其解释为空列表并返回 0。


LMOVE

Syntax

bash
    LMOVE source destination LEFT|RIGHT LEFT|RIGHT

原子地返回并删除存储在 source 的列表的第一个/最后一个元素(头/尾取决于 wherefrom 参数),并将元素推送到第一个/最后一个元素(头/尾取决于 whereto 参数)存储在destination的列表的名称。

此命令取代了现已弃用的 RPOPLPUSH。执行 LMOVE RIGHT LEFT 是等效的。


LPOP

Syntax

bash
    LPOP key [count]

删除并返回存储在key处的列表的第一个元素。

默认情况下,该命令从列表开头弹出单个元素。当提供可选的 count 参数时,回复将包含最多 count 个元素,具体取决于列表的长度。


LPUSH

Syntax

bash
    LPUSH key [element] [element ...]

将所有指定值插入存储在key 的列表的头部。如果key不存在,则在执行推送操作之前将其创建为空列表。


LPUSHX

Syntax

bash
    LPUSHX key [element] [element ...]

仅当key已存在并保存列表时,才将指定值插入存储在key处的列表的头部。与 LPUSH 相反,当key不存在时,不会执行任何操作。


LRANGE

Syntax

bash
    LRANGE key start stop

返回存储在key处的列表的指定元素。偏移量 start 和 stop 是从零开始的索引,0 是列表的第一个元素(列表的头部),1 是下一个元素,依此类推。


LREM

Syntax

bash
    LREM key count element

从存储在key的列表中删除等于 element 的第一个 count 次出现的元素。 count参数通过以下方式影响操作:

  • count > 0: 删除与从头到尾移动的元素相等的元素。

  • count < 0: 删除等于从尾部移动到头部的元素的元素。

  • count = 0: 删除所有等于element的元素。


LTRIM

Syntax

bash
    LTRIM key start stop

修剪现有列表,使其仅包含指定范围内的指定元素。 start 和 stop 都是从零开始的索引,其中 0 是列表的第一个元素(头),1 是下一个元素,依此类推。


RPOP

Syntax

bash
    RPOP key [count]

删除并返回存储在key处的列表的最后一个元素。

默认情况下,该命令从列表末尾弹出单个元素。当提供可选的 count 参数时,回复将包含最多 count 个元素,具体取决于列表的长度。


RPOPLPUSH

Syntax

bash
    RPOPLPUSH source destination

原子地返回并删除存储在源处的列表的最后一个元素(尾部),并将该元素推送到存储在目标处的列表的第一个元素(头部)。

迁移或编写新代码时,可以用带有 RIGHT 和 LEFT 参数的 LMOVE 替换它。


RPUSH

Syntax

bash
    RPUSH key element [element]

将所有指定值插入存储在key的列表的尾部。如果key不存在,则在执行推送操作之前将其创建为空列表。


RPUSHX

Syntax

bash
    RPUSHX key element [element]

仅当key和列表存在时,才将指定值插入存储在key处的列表的尾部。与 RPUSH相反,当key不存在时不会执行任何操作。


Set

SADD

Syntax

bash
    SADD key member [member]

将指定成员添加到存储在key处的集合中。已属于该集合成员的指定成员将被忽略。如果key不存在,则在添加指定成员之前创建一个新集合。


SCARD

Syntax

bash
    SCARD key

返回存储在key处的集合的集合基数(元素数量)。


SMEMBERS

Syntax

bash
    SMEMBERS key

返回存储在key处的设置值的所有成员。


SPOP

Syntax

bash
    SPOP key [count]

从存储在key处的设置值中删除并返回一个或多个随机成员。


SREM

Syntax

bash
    SREM key member [member]

从存储在key处的集合中删除指定的成员。不属于该集合的指定成员将被忽略。

如果key不存在,则将其视为空集,并且此命令返回 0。


SSCAN

Syntax

bash
    SSCAN key cursor [MATCH pattern] [COUNT count]

迭代 Sets 类型的元素。与 HSCANZSCAN 命令相同,SSCAN 用于增量迭代key处存储的集合的元素。

match 参数允许在从集合中检索元素后对元素应用过滤器。 count选项设置从服务器返回到此命令的最大项目数的限制。此限制还与全局服务器设置的 object-scan-count-limit 一起设置。


Sorted Set

ZADD

Syntax

bash
    ZADD key score member [score member ...]

将具有指定分数的所有指定成员添加到存储在 key 处的排序集中。可以指定多个分数/成员对。如果指定的成员已经是排序集的成员,则更新分数并将元素重新插入到正确的位置以确保正确的排序。

如果 key 不存在,则会创建一个新的排序集,其中指定的成员作为唯一成员,就像排序集为空一样。

分数值应该是双精度浮点数的字符串表示形式。


ZCARD

Syntax

bash
    ZCARD key

返回存储在key处的排序集的排序集基数(元素数)


ZCOUNT

Syntax

bash
    ZCOUNT key min max

返回排序集中key上得分介于 min 和 max 之间的元素数量。

min 和 max 参数具有与 ZRANGEBYSCORE 所描述的相同的语义。


ZDIFF

Syntax

bash
    ZDIFF numkeys key [key ...] [WITHSCORES]

返回第一个和所有连续输入排序集键之间的差异。输入键的总数由 numkeys 指定。

不存在的键被认为是空集。


ZINCRBY

Syntax

bash
    ZINCRBY key increment member

按增量增加存储在 key 处的排序集中成员的分数。如果有序集中不存在成员,则将其添加为增量作为其分数(就好像其先前的分数为 0.0)。如果key不存在,则创建一个以指定成员作为其唯一成员的新排序集。

key存在但不包含有序集时,会返回错误。

分数值应该是数值的字符串表示形式,并接受双精度浮点数。可以提供负值来减少分数。


ZLEXCOUNT

Syntax

bash
    ZLEXCOUNT key min max

当排序集中的所有元素都以相同的分数插入时,为了强制按字典顺序排序,此命令返回排序集中在key处的元素数量,其值介于 min 和 max 之间。

min 和 max 参数的含义与ZRANGEBYLEX中描述的含义相同。


ZPOPMAX

Syntax

bash
    ZPOPMAX key [count]

删除并返回key存储的排序集中得分最高的 count 个成员。

如果未指定,计数的默认值为 1。指定高于排序集基数的计数值不会产生错误。当返回多个元素时,得分最高的元素将位于第一个,其次是得分较低的元素。


ZPOPMIN

Syntax

bash
    ZPOPMIN key [count]

删除并返回key处存储的排序集中得分最低的 count 个成员。

如果未指定,计数的默认值为 1。指定高于排序集基数的计数值不会产生错误。当返回多个元素时,得分最低的元素将排在第一个,然后是得分较高的元素。


ZRANDMEMBER

Syntax

bash
    ZRANDMEMBER key [count [WITHSCORES]]

当仅使用 key 参数调用时,从存储在key处的排序集值中返回一个随机元素。

如果提供的计数参数为正,则返回不同元素的数组。数组的长度是 count 或排序集的基数 ZCARD,以较小者为准。

如果使用负计数调用,则行为会发生变化,并且允许该命令多次返回相同的元素。在这种情况下,返回的元素数量是指定计数的绝对值。

可选的WITHSCORES修饰符更改回复,使其包含从排序集中随机选择的元素的相应分数。


ZRANGE

Syntax

bash
    ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

返回存储在 key 处的排序集中指定范围的元素。

ZRANGE 可以执行不同类型的范围查询:按索引(排名)、按分数或按字典顺序。


ZRANGEBYLEX

Syntax

bash
    ZRANGEBYLEX key min max [LIMIT offset count]

当排序集中的所有元素都以相同的分数插入时,为了强制按字典顺序排序,此命令返回排序集中 key 处的所有元素,其值介于 min 和 max 之间

如果排序集中的元素具有不同的分数,则返回的元素是未指定的。

从旧版本迁移时,可以用带有 BYLEX 参数的 ZRANGE 替换它。


ZRANGEBYSCORE

Syntax

bash
    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回排序集中 key 上得分在 min 和 max 之间的所有元素(包括得分等于 min 或 max 的元素)。这些元素被认为是从低分到高分排序的。

具有相同分数的元素按字典顺序返回。

迁移或编写新代码时,可以将其替换为带有 BYSCORE 参数的 ZRANGE


ZRANK

Syntax

bash
    ZRANK key member [WITHSCORE]

返回存储在 key 处的排序集中成员的排名,分数从低到高排序。排名(或索引)从 0 开始,这意味着得分最低的成员排名为 0。

可选的WITHSCORE参数用返回的元素的分数来补充命令的回复。

使用 ZREVRANK 获取元素的排名,其分数从高到低排序。


ZREM

Syntax

bash
    ZREM key member [member ...]

从存储在 key 处的排序集中删除指定的成员。不存在的成员将被忽略。


ZREMRANGEBYLEX

Syntax

bash
    ZREMRANGEBYLEX key min max

当排序集中的所有元素都以相同的分数插入时,为了强制按字典顺序排序,此命令会删除存储在由 min 和 max 指定的字典范围之间的 key 处的排序集中的所有元素。

min 和 max 的含义与 ZRANGEBYLEX 命令相同。类似地,如果使用相同的 min 和 max 参数调用,此命令实际上会删除 ZRANGEBYLEX 将返回的相同元素。


ZREMRANGEBYSCORE

Syntax

bash
    ZREMRANGEBYSCORE key min max

删除存储在 key 处的排序集中分数在 min 和 max(含)之间的所有元素。


ZREMRANGEBYRANK

Syntax

bash
    ZREMRANGEBYRANK key start stop

删除排序集中存储在key上且等级介于 start 和 stop 之间的所有元素。 start 和 stop 都是基于 0 的索引,其中 0 是得分最低的元素。这些索引可以是负数,它们表示从得分最高的元素开始的偏移量。例如:-1 是得分最高的元素,-2 是得分第二高的元素,依此类推。


ZREMRANGEBYSCORE

Syntax

bash
    ZREMRANGEBYSCORE key min max

删除存储在 key 处的排序集中分数在 min 和 max(含)之间的所有元素。


ZREVRANGE

Syntax

bash
    ZREVRANGE key start stop [WITHSCORES]

返回存储在key处的排序集中指定范围的元素。这些元素被认为是按照从最高分到最低分的顺序排列的。字典序降序用于具有相同分数的元素。

除了相反的顺序外,ZREVRANGEZRANGE类似。


ZREVRANK

Syntax

bash
    ZREVRANK key member [WITHSCORE]

返回存储在 key 处的排序集中成员的排名,分数从高到低排序。排名(或索引)从 0 开始,这意味着得分最高的成员排名为 0。

可选的WITHSCORE参数用返回的元素的分数来补充命令的回复。

使用 ZRANK 获取元素的排名,分数从低到高排序。


ZSCAN

Syntax

bash
    ZSCAN key cursor [MATCH pattern] [COUNT count]

迭代有序集的元素。与 HSCANSSCAN 命令相同,使用 ZSCAN 是为了增量迭代 key 处存储的集合的元素。

match 参数允许在从集合中检索元素后对元素应用过滤器。 count选项设置从服务器返回到此命令的最大项目数的限制。此限制还与全局服务器设置的 object-scan-count-limit 一起设置。


ZSCORE

Syntax

bash
    ZSCORE key member

返回 key 处排序集中成员的分数。

如果有序集中不存在member,或者 key 不存在,则返回nil。


Geospatial indices

GEOADD

Syntax

bash
    GEOADD key [NX | XX] [CH] longitude latitude member [longitude latitude member ... ]

将指定的地理空间项(经度、纬度、名称)添加到指定的键。数据作为排序集存储到键中,这样就可以使用 GEOSEARCH 命令查询项目。

该命令采用标准格式 x,y 的参数,因此必须在纬度之前指定经度。可索引的坐标存在限制:非常靠近极点的区域不可索引。

限制如下:

  • 有效经度范围为 -180 到 180 度。
  • 有效纬度范围为 -85.05112878 到 85.05112878 度。

当用户尝试索引指定范围之外的坐标时,该命令将报告错误。

注意:没有 GEODEL 命令,因为您可以使用 ZREM 删除元素。 Geo索引结构是一个排序集。

GEOADD 还提供以下选项:

  • XX: 只更新已经存在的元素。切勿添加元素。
  • NX: 不要更新已经存在的元素。始终添加新元素。
  • CH: 将返回值从新增元素的数量修改为已更改元素的总数(CH 是changed 的​​缩写)。

更改的元素是添加的新元素和坐标已更新的已存在元素。因此,在命令行中指定的与过去具有相同分数的元素不被计算在内。注意:通常情况下, GEOADD 的返回值只统计新增元素的数量。

注意: XXNX 选项是互斥的。


GEODIST

Syntax

bash
    GEODIST key member1 member2 [M|KM|FT|MI]

返回由排序集表示的地理空间索引中两个成员之间的距离。

给定一个表示地理空间索引的排序集(使用 GEOADD 命令填充),该命令返回指定单位中两个指定成员之间的距离。

如果一个或两个成员缺失,该命令将返回 NULL。

单位必须是以下之一,默认为米:

  • m 代表米
  • km 代表公里。
  • mi 代表英里
  • ft 代表英尺

计算距离时假设地球是一个完美的球体,因此在边缘情况下可能存在高达 0.5% 的误差。


GEOHASH

Syntax

bash
    GEOHASH key [member [member ...]]

返回有效的 Geohash 字符串,表示一个或多个元素在表示地理空间索引的排序集值中的位置(其中使用GEOADD添加元素)


GEOPOS

Syntax

bash
    GEOPOS key [member [member ...]]

返回由 key 处的排序集表示的地理空间索引的所有指定成员的位置(经度、纬度)。

给定一个表示地理空间索引的排序集(使用 GEOADD命令填充),获取指定成员的坐标通常很有用。当通过 GEOADD 填充地理空间索引时,坐标将转换为 52 位 geohash,因此返回的坐标可能不完全是用于添加元素的坐标,但可能会引入小错误。

该命令可以接受可变数量的参数,因此即使指定了单个元素,它也始终返回位置数组。


GEOSEARCH

Syntax

bash
    GEOSEARCH key <FROMMEMBER member> <BYBOX width height <M|KM|FT|MI>> [ASC|DESC] [WITHCOORD WITHDIST WITHHASH]

使用 GEOADD返回填充有地理空间信息的排序集的成员,这些成员位于给定形状指定的区域的边界内。

查询的中心点由以下选项之一提供:

  • FROMMEMBER: 使用给定现有 member 在排序集中的位置

查询的形状由该选项提供:

  • BYBOX: 在轴对齐的矩形内搜索,由heightwidth确定。

该命令可以选择使用以下选项返回附加信息:

  • WITHDIST: 同时返回返回的物品距指定中心点的距离。距离以与半径或高度和宽度参数指定的单位相同的单位返回。
  • WITHCOORD: 同时返回匹配项的经度和纬度。
  • WITHHASH: 还以 52 位无符号整数的形式返回项目的原始 geohash 编码排序集分数。这仅调试有用,否则一般用户不会感兴趣。

默认情况下,匹配项返回时未排序。要对它们进行排序,请使用以下两个选项之一:

  • ASC: 相对于中心点,从最近到最远对返回的项目进行排序。

  • DESC: 相对于中心点,从最远到最近对返回的项目进行排序。

返回值

匹配成员的数组,其中每个子数组代表一个项目(经度,纬度)。