redis数据类型set,zset

华子目录

  • `Set`
    • 结构图
    • 相关命令
      • `sdiff key1 [key2]`
      • `sdiffstore destination key1 [key2...]`
      • `sinter key1 [key2...]`
      • `sinterstore destination key1 [key2...]`
      • `sunion key1 [key2...]`
      • `sunionstore destination key1 [key2...]`
      • `smove source destination member`
      • `spop key [count]`
      • `sscan key cursor [MATCH pattern] [COUNT count]`
  • `Zset`
    • 结构图
    • 相关命令
      • `zcount key min max`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
        • 注意事项
      • `zincrby key increment member`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zlexcount key min max`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrange key start stop [withscores]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrangebylex key min max [limit offset count]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrangebyscore key min max [withscores] [limit offset count]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrank key member`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrem key member [member...]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zremrangebylex key min max`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zremrangebyrank key start stop`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zremrangebyscore key min max`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrevrange key start stop [withscores]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrevrangebyscore key max min [withscores]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zrevrank key member`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zscore key member`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zinterstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zunionstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例
      • `zscan key cursor [MATCH pattern] [COUNT count]`
        • 命令格式
        • 参数说明
        • 返回值
        • 示例

Set

  • redissetstring类型无序集合。集合中成员是唯一的,这就意味着集合中不能出现重复的数据redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为3^32^ - 1(4294967295,每个集合可以存储40多亿个成员)。
  • set类型一般用于赞,踩,标签,好友关系等。

结构图

在这里插入图片描述

相关命令

命令说明
sadd key member1 [member2...]向集合中添加一个或多个成员
smembers key返回集合中的所有成员
scard key获取集合的成员数
srandmember key [count]返回集合中一个或多个随机数
sismember key member判断member元素是否是集合key的成员
srem key member1 [member2...]移除集合中一个或多个成员
sdiff key1 [key2]返回给定所有集合的差集
sdiffstore destination key1 [key2...]返回给定所有集合的差集并存储在 destination
sinter key1 [key2...]返回给定所有集合的交集
sinterstore destination key1 [key2...]返回给定所有集合的交集并存储在 destination
sunion key1 [key2...]返回所有给定集合的并集
sunionstore destination key1 [key2...]所有给定集合的并集存储在 destination 集合中
smove source destination membermember 元素从 source 集合移动到 destination 集合
spop key [count]移除并返回集合中的一个随机元素
sscan key cursor [MATCH pattern] [COUNT count]迭代集合中的元素

sdiff key1 [key2]

  • sdiff 是 Redis 中的一个命令,它用于执行集合(set)的对称差集运算。对称差集是两个集合的差集的并集,即只属于第一个集合或只属于第二个集合的元素组成的集合。

  • 具体来说,如果你有两个集合 key1key2,并且你执行了 SDIFF key1 key2,Redis 将返回那些属于 key1 但不属于 key2 的元素,以及那些属于 key2 但不属于 key1 的元素。

但是,需要注意的是,Redis 的 SDIFF 命令的语法并不是你给出的 sdiff key1 [key2]。实际的语法是:

SDIFF key1 [key2 ...]

这意味着你可以指定一个或多个额外的键(除了 key1),并且 Redis 将返回与 key1 的对称差集。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 b c d

执行 SDIFF set1 set2 将返回:

1) "a"
2) "d"

因为 “a” 只存在于 set1 中,而 “d” 只存在于 set2 中。

sdiffstore destination key1 [key2...]

  • SDIFFSTORE 是 Redis 中的一个命令,它用于执行集合(set)的对称差集运算,并将结果存储在一个新的集合中。这与 SDIFF 命令类似,但 SDIFFSTORE 会将结果保存到指定的 destination 键中,而不是直接返回结果。

SDIFFSTORE 命令的语法是:

SDIFFSTORE destination key1 [key2 ...]

其中:

  • destination:用于存储对称差集结果的新集合的键名。
  • key1:要进行对称差集运算的第一个集合的键名。
  • [key2 ...]:可选的,要进行对称差集运算的其他集合的键名。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 b c d

执行 SDIFFSTORE set_result set1 set2 将把 set1set2 的对称差集结果保存到 set_result 中。结果集合 set_result 将包含元素 “a” 和 “d”,因为 “a” 只存在于 set1 中,而 “d” 只存在于 set2 中。

你可以通过 SMEMBERS 命令来查看 set_result 的内容:

SMEMBERS set_result
1) "a"
2) "d"

sinter key1 [key2...]

是的,SINTER 是 Redis 中的一个命令,用于执行集合(set)的交集运算。它会返回所有指定集合的交集,即同时存在于所有集合中的元素。

SINTER 命令的语法是:

SINTER key1 [key2 ...]

其中:

  • key1:第一个集合的键名。
  • [key2 ...]:可选的,其他集合的键名。

如果至少有一个集合是空的,那么 SINTER 将返回一个空集合。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 b c d
SADD set3 c e

执行 SINTER set1 set2 set3 将返回:

1) "c"

因为 “c” 是唯一同时存在于 set1set2set3 中的元素。

sinterstore destination key1 [key2...]

  • SINTERSTORE 是 Redis 中用于执行集合(set)的交集运算并将结果存储在一个新集合的命令。这个命令会计算所有给定集合的交集,并将结果保存在指定的 destination 键中。

SINTERSTORE 命令的语法是:

SINTERSTORE destination key1 [key2 ...]

其中:

  • destination:新集合的键名,用于存储交集的结果。
  • key1:第一个集合的键名。
  • [key2 ...]:可选的,其他集合的键名。

如果至少有一个集合是空的,或者没有任何集合被指定,那么 SINTERSTORE 命令将在 destination 键中存储一个空集合。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 b c d
SADD set3 c e

执行 SINTERSTORE set_intersection set1 set2 set3 将把 set1set2set3 的交集结果保存到 set_intersection 中。结果集合 set_intersection 将只包含元素 “c”,因为它是唯一同时存在于 set1set2set3 中的元素。

你可以通过 SMEMBERS 命令来查看 set_intersection 的内容:

SMEMBERS set_intersection
1) "c"

sunion key1 [key2...]

SUNION 是 Redis 中的一个命令,用于执行集合(set)的并集运算。它会返回所有指定集合的并集,即存在于任何一个集合中的元素。

SUNION 命令的语法是:

SUNION key1 [key2 ...]

其中:

  • key1:第一个集合的键名。
  • [key2 ...]:可选的,其他集合的键名。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 b c d
SADD set3 e f

执行 SUNION set1 set2 set3 将返回:

1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"

因为这些都是存在于 set1set2set3 中的元素。

sunionstore destination key1 [key2...]

  • SINTERSTORE 类似,Redis 也提供了一个 SUNIONSTORE 命令,该命令将并集的结果存储在一个新的集合中,而不是直接返回结果。其语法是:
SUNIONSTORE destination key1 [key2 ...]

使用 SUNIONSTORE 命令,你可以将并集的结果保存到 destination 指定的键中。例如:

SUNIONSTORE set_union set1 set2 set3

这会将 set1set2set3 的并集结果保存到 set_union 键中。然后,你可以使用 SMEMBERS 命令来查看 set_union 的内容:

SMEMBERS set_union
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"

smove source destination member

SMOVE 是 Redis 中的一个命令,用于将指定的成员从一个集合(source)移动到另一个集合(destination)。如果成员存在于源集合中,SMOVE 命令将其从源集合中移除,并添加到目标集合中。如果移动成功,命令将返回 1;如果成员不存在于源集合中,命令将返回 0

SMOVE 命令的语法是:

SMOVE source destination member

其中:

  • source:源集合的键名。
  • destination:目标集合的键名。
  • member:要移动的成员的值。

例如,假设你有以下集合:

SADD set1 a b c
SADD set2 d e

现在,如果你想要将 set1 中的成员 b 移动到 set2,你可以使用 SMOVE 命令:

SMOVE set1 set2 b

执行上述命令后,set1 的内容将变为 a c,而 set2 的内容将变为 d e b(假设移动成功)。然后,你可以使用 SMEMBERS 命令来查看两个集合的内容:

SMEMBERS set1
1) "a"
2) "c"SMEMBERS set2
1) "d"
2) "e"
3) "b"

注意:如果 b 不存在于 set1 中,SMOVE 命令将返回 0,并且 set2 的内容不会改变。

spop key [count]

SPOP 是 Redis 中的一个命令,用于移除并返回集合(set)中的一个随机元素。如果集合是空的,SPOP 命令将返回一个 nil 值或者一个错误(取决于 Redis 的配置和使用的客户端库)。

SPOP 命令的语法是:

SPOP key [count]

其中:

  • key:集合的键名。
  • [count]:可选参数,指定要移除并返回的元素数量。如果不提供,或者提供的 count 为 1,那么 SPOP 将只移除并返回一个随机元素。如果 count 大于集合中的元素数量,那么将返回集合中的所有元素。

例如,假设你有以下集合:

SADD myset "one" "two" "three" "four"

执行 SPOP myset 将返回集合 myset 中的一个随机元素,比如 "two"(注意这里返回的是随机元素,不一定是 "two"),并且这个元素会从集合中移除。然后,如果你再次查看 myset 的内容,你会看到 "two" 已经不在其中了。

SMEMBERS myset
1) "one"
2) "three"
3) "four"

如果你指定 count 参数,比如 SPOP myset 2,那么将返回两个随机元素(如果集合中有足够的元素),并从集合中移除它们。

需要注意的是,SPOP 命令是原子性的,即在执行期间不会被其他命令打断。这意味着在并发环境下,你可以安全地使用 SPOP 来处理集合中的元素。

sscan key cursor [MATCH pattern] [COUNT count]

SSCAN 是 Redis 中用于迭代集合(set)中的元素的命令。当集合非常大,无法一次性获取所有元素时,可以使用 SSCAN 来逐步迭代集合中的元素。

SSCAN 命令的语法是:

SSCAN key cursor [MATCH pattern] [COUNT count]

其中:

  • key:集合的键名。
  • cursor:游标,是一个从 0 开始的整数值。用于标识迭代的起始位置。初始调用时,游标应为 0。在后续的迭代中,应使用前一次迭代返回的游标值。
  • MATCH pattern(可选):用于过滤返回的元素的模式。pattern 是一个 glob 风格的模式串。
  • COUNT count(可选):指定每次迭代返回的元素数量。注意,这是一个提示,Redis 可能会返回更多或更少的元素。

SSCAN 命令被调用时,它会返回两个值:

  1. 一个新的游标值,用于下一次迭代。如果返回的游标值为 0,则表示迭代结束。
  2. 一个数组,包含匹配模式的元素。

示例:

假设你有一个名为 myset 的集合,包含以下元素:one, two, three, four, five

如果你想迭代这个集合并只获取以 t 开头的元素,你可以这样做:

# 第一次迭代,游标为 0
SSCAN myset 0 MATCH t*
# 假设返回游标为 123 和元素 ["three"]# 第二次迭代,使用上次返回的游标 123
SSCAN myset 123 MATCH t*
# 如果集合中没有更多的匹配元素,返回的游标值将为 0,且元素数组为空

注意:SSCAN 命令是非阻塞的,并且可以在不锁定集合的情况下迭代集合中的元素。这使得 SSCAN 命令在处理大型集合时非常有用。

  • 例:SSCAN names 0 MATCH test* COUNT 10 # 每次返回10条以test为前缀的key (name为key名)

Zset

  • Redis有序集合和集合一样也是string类型元素的集合且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为2^32^ - 1 (4294967295, 每个集合可存储40多亿个成员)。
  • Zset类型一般用于排行榜等。

结构图

在这里插入图片描述

相关命令

命令语法说明
zadd key score1 member1 [score2 member2...]有序集合添加一个或多个成员,或者更新已存在成员的分数
zcard key获取有序集合成员数
zcount key min max计算在有序集合指定区间分数的成员数
zincrby key increment member有序集合中对指定成员的分数加上增量 increment
zlexcount key min max有序集合中计算指定字典区间内成员数量
zrange key start stop [withscores]通过索引区间返回有序集合指定区间内的成员
zrangebylex key min max [limit offset count]通过字典区间返回有序集合的成员
zrangebyscore key min max [withscores] [limit offset count]通过分数返回有序集合指定区间内的成员
zrank key member返回有序集合中指定成员的索引
zrem key member [member...]移除有序集合中的一个或多个成员
zremrangebylex key min max移除有序集合中给定的字典区间的所有成员
zremrangebyrank key start stop移除有序集合中给定的排名区间的所有成员
zremrangebyscore key min max移除有序集合中给定的分数区间的所有成员
zrevrange key start stop [withscores]返回有序集中指定区间内的成员通过索引,分数从高到低
zrevrangebyscore key max min [withscores]返回有序集中指定分数区间内的成员分数从高到低排序
zrevrank key member返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zscore key member返回有序集中,成员的分数值
zinterstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
zunionstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]计算给定的一个或多个有序集的并集,并存储在新的 key 中
zscan key cursor [MATCH pattern] [COUNT count]迭代有序集合中的元素(包括元素成员和元素分值)

zcount key min max

ZCOUNT key min max 是 Redis 中用于有序集合(sorted set)的命令,用于计算指定分数范围内的成员数量。以下是关于该命令的详细解释:

命令格式
ZCOUNT key min max
参数说明
  • key:有序集合的名称。
  • minmax:指定分数范围的最小值和最大值。这两个参数支持以下用法:
    • 使用正数表示具体的分数值。
    • 使用 -inf 表示无限小,即包括所有小于 max 的分数。
    • 使用 +inf 表示无限大,即包括所有大于 min 的分数。
    • 在数字前加 ( 表示不包含该数字本身(开区间)。
    • 在数字前加 [ 表示包含该数字本身(闭区间,但默认就是闭区间,所以通常省略)。
返回值

返回一个整数,表示在有序集合 key 中,分数值在 minmax 之间(包括等于 minmax)的成员数量。

示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些员工和他们的薪水(作为分数):

redis> ZADD myzset 2000 jack
redis> ZADD myzset 3500 peter
redis> ZADD myzset 5000 tom

现在,我们想要计算薪水在 2000 到 5000 之间(包括 2000 和 5000)的员工数量:

redis> ZCOUNT myzset 2000 5000
(integer) 3

这个命令将返回 3,因为有三名员工的薪水在这个范围内。

注意事项
  • 如果 key 不存在,或者 key 不是一个有序集合,那么 ZCOUNT 命令将返回一个错误。
  • ZCOUNT 命令的时间复杂度为 O(log(N)),因为它使用元素的排名来获取范围的概念,因此不需要做与范围大小成比例的工作。

zincrby key increment member

ZINCRBY 是 Redis 中用于有序集合(sorted set)的命令,用于对有序集合中指定成员的分数进行增加。这个命令会找到指定成员,并将其分数增加指定的增量值。

命令格式
ZINCRBY key increment member
参数说明
  • key:有序集合的名称。
  • increment:增加的分数值,可以为正数或负数。
  • member:有序集合中的成员。
返回值

返回增加后的成员的分数值。如果成员不存在,那么 ZINCRBY 命令将用 0 作为起始分数,然后加上 increment

示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些员工和他们的薪水(作为分数):

redis> ZADD myzset 2000 jack
redis> ZADD myzset 3500 peter
redis> ZADD myzset 5000 tom

现在,我们想要给 jack 的薪水增加 500:

redis> ZINCRBY myzset 500 jack
"2500"

在这个例子中,jack 的薪水从 2000 增加到了 2500,所以命令返回了 2500

如果我们给一个不存在的成员(比如 jane)增加薪水,Redis 会用 0 作为起始分数:

redis> ZINCRBY myzset 1000 jane
"1000"

在这个例子中,因为 jane 原先不存在于有序集合中,所以 Redis 用 0 作为起始分数,并增加了 1000,最终返回了 1000

zlexcount key min max

  • ZLEXCOUNTRedis 中用于有序集合(sorted set)的命令,但它不是按照分数(score)来计算成员数量的,而是根据成员自身的字符串值(lexicographically,即按字典顺序)来计算在指定范围内的成员数量。这个命令特别适用于那些将字符串作为成员值,并希望按照这些字符串的字典顺序来处理的有序集合。
命令格式
ZLEXCOUNT key min max
参数说明
  • key:有序集合的名称。
  • minmax:指定范围的最小值和最大值,这两个值都是字符串,并且是按照字典顺序来比较的。这两个参数支持以下用法:
    • 使用 + 表示无限大,即包括所有大于 min 的字符串。
    • 使用 - 表示无限小,即包括所有小于 max 的字符串。
    • 使用 [ 表示包含该字符串本身(闭区间)。
    • 使用 ( 表示不包含该字符串本身(开区间)。如果省略了方括号或圆括号,则默认为闭区间。
返回值

返回一个整数,表示在有序集合 key 中,成员值在 minmax 之间(包括等于 minmax)的成员数量。

示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些字符串成员和它们的分数:

redis> ZADD myzset 0 a
redis> ZADD myzset 0 b
redis> ZADD myzset 0 c
redis> ZADD myzset 0 d

现在,我们想要计算成员值在 “b” 和 “d” 之间(包括 “b” 和 “d”)的成员数量:

redis> ZLEXCOUNT myzset "[b" "[d"
(integer) 3

这个命令将返回 3,因为成员 “b”、“c” 和 “d” 的值都在指定的范围内。注意这里我们使用了闭区间,并且由于 Redis 的字符串比较是区分大小写的,所以即使分数相同,成员值也会按照它们的字典顺序来排列和比较。

zrange key start stop [withscores]

ZRANGERedis 中用于有序集合(sorted set)的命令,用于获取指定范围内的成员列表。这些成员是根据它们的分数(score)来排序的。

命令格式
ZRANGE key start stop [WITHSCORES]
参数说明
  • key:有序集合的名称。
  • startstop:返回的有序集合成员的索引位置(基于 0 的索引)。startstop 都可以是负数,表示从尾部开始计算索引。例如,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。
  • [WITHSCORES]:可选参数。如果包含这个参数,那么返回的每个成员后面都会跟着它的分数。
返回值
  • 如果没有 [WITHSCORES] 参数,则返回一个包含指定范围内的成员的列表。
  • 如果有 [WITHSCORES] 参数,则返回一个包含指定范围内的成员及其对应分数的列表。每个成员和分数都作为列表的一个元素,并且成员和分数是成对出现的。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d

现在,我们想要获取索引位置从 0 到 1(包括这两个位置)的成员:

redis> ZRANGE myzset 0 1
1) "a"
2) "b"

如果我们还想要获取这些成员的分数,我们可以使用 [WITHSCORES] 参数:

redis> ZRANGE myzset 0 1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"

注意:在 Redis 中,有序集合成员的分数是唯一的,但是成员本身的值(即字符串值)可以重复。如果有多个成员具有相同的分数,那么它们的相对顺序是根据它们被添加到有序集合中的顺序来确定的。在上面的例子中,我们假设没有成员具有相同的分数,但在实际情况中,这是可能发生的。

zrangebylex key min max [limit offset count]

ZRANGEBYLEX 是 Redis 中用于有序集合(sorted set)的命令,用于根据成员的字典顺序(lexicographically)来获取指定范围内的成员列表。这个命令特别适用于当有序集合被用作字符串集合,并且成员值(而非分数)具有重要性时。

命令格式
ZRANGEBYLEX key min max [LIMIT offset count]
参数说明
  • key:有序集合的名称。
  • minmax:指定范围的最小值和最大值,这两个值都是字符串,并且是按照字典顺序来比较的。这两个参数支持以下用法:
    • 使用 + 表示无限大,即包括所有大于 min 的字符串。
    • 使用 - 表示无限小,即包括所有小于 max 的字符串。
    • 使用 [ 表示包含该字符串本身(闭区间)。
    • 使用 ( 表示不包含该字符串本身(开区间)。如果省略了方括号或圆括号,则默认为闭区间。
  • [LIMIT offset count]:可选参数,用于限制返回结果的数量和起始位置。offset 是返回列表的起始位置(基于 0 的索引),count 是返回的最大元素数量。
返回值

返回一个包含指定范围内的成员的列表。如果使用了 [LIMIT offset count] 参数,则只返回指定范围内的部分成员。

示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些字符串成员:

redis> ZADD myzset 0 a
redis> ZADD myzset 0 b
redis> ZADD myzset 0 c
redis> ZADD myzset 0 d

现在,我们想要获取字典顺序在 “b” 和 “d” 之间(包括 “b” 和 “d”)的成员:

redis> ZRANGEBYLEX myzset "[b" "[d"
1) "b"
2) "c"
3) "d"

如果我们还想要限制返回结果的数量,比如只返回前两个成员,我们可以使用 [LIMIT 0 2] 参数:

redis> ZRANGEBYLEX myzset "[b" "[d" LIMIT 0 2
1) "b"
2) "c"

在这个例子中,我们指定了偏移量为 0(即返回列表的起始位置),并指定了最大元素数量为 2,所以只返回了 “b” 和 “c” 这两个成员。

zrangebyscore key min max [withscores] [limit offset count]

ZRANGEBYSCORE 是 Redis 中用于有序集合(sorted set)的命令,用于获取指定分数范围内的成员列表。这些成员是根据它们的分数(score)来排序的。

命令格式
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
参数说明
  • key:有序集合的名称。
  • minmax:指定分数范围的最小值和最大值。这两个参数支持以下用法:
    • 使用正数表示具体的分数值。
    • 使用 -inf 表示无限小,即包括所有小于 max 的分数。
    • 使用 +inf 表示无限大,即包括所有大于 min 的分数。
    • 在数字前加 ( 表示不包含该分数值本身(开区间)。
    • 在数字前加 [ 表示包含该分数值本身(闭区间,但默认就是闭区间,所以通常省略)。
  • [WITHSCORES]:可选参数。如果包含这个参数,那么返回的每个成员后面都会跟着它的分数。
  • [LIMIT offset count]:可选参数,用于限制返回结果的数量和起始位置。offset 是返回列表的起始位置(基于 0 的索引),count 是返回的最大元素数量。
返回值
  • 返回一个包含指定分数范围内的成员的列表。
  • 如果使用了 [WITHSCORES] 参数,则返回的列表中的每个成员后面都会跟着它的分数。
  • 如果使用了 [LIMIT offset count] 参数,则只返回指定范围内的部分成员。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d

现在,我们想要获取分数在 2 到 4 之间(包括 2 和 4)的成员:

redis> ZRANGEBYSCORE myzset 2 4
1) "b"
2) "c"
3) "d"

如果我们还想要获取这些成员的分数,我们可以使用 [WITHSCORES] 参数:

redis> ZRANGEBYSCORE myzset 2 4 WITHSCORES
1) "b"
2) "2"
3) "c"
4) "3"
5) "d"
6) "4"

如果我们只想获取前两个成员,我们可以使用 [LIMIT 0 2] 参数:

redis> ZRANGEBYSCORE myzset 2 4 LIMIT 0 2
1) "b"
2) "c"

zrank key member

ZRANK 是 Redis 中用于有序集合(sorted set)的命令,它返回指定成员在有序集合中的排名。排名是根据成员的分数(score)来确定的,分数最小的成员排名为 0。

命令格式
ZRANK key member
参数说明
  • key:有序集合的名称。
  • member:需要获取排名的成员。
返回值
  • 如果成员存在于有序集合中,则返回该成员的排名(基于 0 的索引)。
  • 如果成员不存在于有序集合中,则返回 nilNone(取决于 Redis 客户端或库的返回方式)。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d

现在,我们想要获取成员 b 的排名:

redis> ZRANK myzset b
(integer) 1

因为成员 b 的分数是 2,它在有序集合中的排名是 1(基于 0 的索引)。注意,即使有两个或更多的成员具有相同的分数,它们的排名也是根据它们被添加到有序集合中的顺序来确定的。在上面的例子中,如果我们添加了一个分数也为 2 的成员 e,那么 e 的排名将会在 b 之后(假设 e 是在 b 之后添加的)。

zrem key member [member...]

ZREM 是 Redis 中用于有序集合(sorted set)的命令,用于移除有序集合中的一个或多个成员。

命令格式
ZREM key member [member ...]
参数说明
  • key:有序集合的名称。
  • member [member ...]:一个或多个需要被移除的成员。
返回值
  • 被成功移除的成员数量。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d

现在,我们想要移除成员 bd

redis> ZREM myzset b d
(integer) 2

因为成功移除了两个成员,所以返回了 2。如果我们再次检查 myzset 的内容,会发现成员 bd 已经不存在了:

redis> ZRANGE myzset 0 -1
1) "a"
2) "c"

在这个例子中,ZRANGE myzset 0 -1 命令用于获取有序集合 myzset 中的所有成员,结果只包含了 ac,说明 bd 已经被成功移除。

zremrangebylex key min max

ZREMRANGEBYLEX 是 Redis 中用于有序集合(sorted set)的命令,它根据成员的字典顺序(lexicographically)来移除指定范围内的成员。这个命令特别适用于当有序集合被用作字符串集合,并且成员值(即字符串值)具有重要性时。

命令格式
ZREMRANGEBYLEX key min max
参数说明
  • key:有序集合的名称。
  • minmax:指定范围的最小值和最大值,这两个值都是字符串,并且是按照字典顺序来比较的。这两个参数支持以下用法:
    • 使用 + 表示无限大,即包括所有大于 min 的字符串。
    • 使用 - 表示无限小,即包括所有小于 max 的字符串。
    • 使用 [ 表示包含该字符串本身(闭区间)。
    • 使用 ( 表示不包含该字符串本身(开区间)。如果省略了方括号或圆括号,则默认为闭区间。
返回值
  • 被成功移除的成员数量。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些字符串成员:

redis> ZADD myzset 0 a
redis> ZADD myzset 0 b
redis> ZADD myzset 0 c
redis> ZADD myzset 0 d
redis> ZADD myzset 0 e

现在,我们想要移除字典顺序在 “b” 和 “d” 之间(包括 “b” 但不包括 “d”)的成员:

redis> ZREMRANGEBYLEX myzset "[b" "(d"
(integer) 2

这个命令移除了成员 “b” 和 “c”,并返回了 2,表示成功移除了两个成员。如果我们再次检查 myzset 的内容,会发现成员 “b” 和 “c” 已经不存在了:

redis> ZRANGE myzset 0 -1
1) "a"
2) "d"
3) "e"

在这个例子中,ZRANGE myzset 0 -1 命令用于获取有序集合 myzset 中的所有成员,结果只包含了 “a”、“d” 和 “e”,说明 “b” 和 “c” 已经被成功移除。

zremrangebyrank key start stop

ZREMRANGEBYRANK 是 Redis 中用于有序集合(sorted set)的命令,它根据成员的排名(rank)来移除指定范围内的成员。排名是根据成员的分数(score)来确定的,分数最低的成员排名为 0,次低的为 1,依此类推。如果成员的分数相同,则它们的排名是连续的,但 Redis 会根据成员在集合中的插入顺序来决定它们的相对排名。

命令格式
ZREMRANGEBYRANK key start stop
参数说明
  • key:有序集合的名称。
  • startstop:指定范围的开始和结束排名(包含 start,但不包含 stop)。排名是从 0 开始的。
返回值
  • 被成功移除的成员数量。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要移除排名在 1 到 3 之间(包括排名 1,但不包括排名 3)的成员:

redis> ZREMRANGEBYRANK myzset 1 3
(integer) 2

这个命令移除了排名为 1 和 2 的成员,即 “b” 和 “c”,并返回了 2,表示成功移除了两个成员。如果我们再次检查 myzset 的内容,会发现成员 “b” 和 “c” 已经不存在了:

redis> ZRANGE myzset 0 -1 WITHSCORES
1) "a"
2) "1"
3) "d"
4) "4"
5) "e"
6) "5"

在这个例子中,ZRANGE myzset 0 -1 WITHSCORES 命令用于获取有序集合 myzset 中的所有成员及其分数,结果只包含了 “a”、“d” 和 “e”,说明 “b” 和 “c” 已经被成功移除。

zremrangebyscore key min max

ZREMRANGEBYSCORE 是 Redis 中用于有序集合(sorted set)的命令,它根据成员的分数(score)来移除指定范围内的成员。这个命令特别适用于当你想要基于分数来批量删除有序集合中的成员时。

命令格式
ZREMRANGEBYSCORE key min max
参数说明
  • key:有序集合的名称。
  • minmax:指定分数范围的最小值和最大值。这两个参数支持以下用法:
    • 使用正数表示具体的分数值。
    • 使用 -inf 表示无限小,即包括所有小于 max 的分数。
    • 使用 +inf 表示无限大,即包括所有大于 min 的分数。
    • 在数字前加 ( 表示不包含该分数值本身(开区间)。
    • 在数字前加 [ 表示包含该分数值本身(闭区间,但默认就是闭区间,所以通常省略)。
返回值
  • 被成功移除的成员数量。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要移除分数在 2 到 4 之间(包括 2 和 4)的成员:

redis> ZREMRANGEBYSCORE myzset 2 4
(integer) 3

这个命令移除了分数为 2、3 和 4 的成员,即 “b”、“c” 和 “d”,并返回了 3,表示成功移除了三个成员。如果我们再次检查 myzset 的内容,会发现成员 “b”、“c” 和 “d” 已经不存在了:

redis> ZRANGE myzset 0 -1 WITHSCORES
1) "a"
2) "1"
3) "e"
4) "5"

在这个例子中,ZRANGE myzset 0 -1 WITHSCORES 命令用于获取有序集合 myzset 中的所有成员及其分数,结果只包含了 “a” 和 “e”,说明 “b”、“c” 和 “d” 已经被成功移除。

zrevrange key start stop [withscores]

ZREVRANGE 是 Redis 中用于有序集合(sorted set)的命令,它返回指定有序集合中成员按分数从高到低排序后的一个子集。与 ZRANGE 命令相反,ZREVRANGE 是按降序排列的。

命令格式
ZREVRANGE key start stop [WITHSCORES]
参数说明
  • key:有序集合的名称。
  • startstop:指定返回成员的索引范围。索引是基于 0 的,其中 0 是最高分的成员(第一个),-1 是最低分的成员(最后一个),-2 是次低分的成员,依此类推。startstop 都是包含边界的,除非指定了开区间(即使用了 ()。
  • [WITHSCORES]:一个可选参数,如果指定了这个选项,返回的成员会和它们的分数一起被返回。
返回值
  • 一个包含指定范围内成员的列表。如果指定了 WITHSCORES 选项,则返回每个成员后跟其分数的列表。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要获取分数从高到低排序的前两个成员及其分数:

redis> ZREVRANGE myzset 0 1 WITHSCORES
1) "e"
2) "5"
3) "d"
4) "4"

在这个例子中,我们指定了 start0(即最高分的成员)和 stop1(即次高分的成员),并且使用了 WITHSCORES 选项来同时获取成员和它们的分数。返回的结果包含了成员 “e” 和 “d” 以及它们的分数 “5” 和 “4”。

如果我们只想要获取成员而不带分数,可以省略 WITHSCORES 选项:

redis> ZREVRANGE myzset 0 1
1) "e"
2) "d"

这样,返回的结果就只包含了成员 “e” 和 “d”。

zrevrangebyscore key max min [withscores]

在 Redis 中,ZREVRANGEBYSCORE 命令用于从有序集合(sorted set)中获取分数在指定范围内的成员,并且这些成员是按分数从高到低排序的。这与 ZRANGEBYSCORE 命令相反,后者是按分数从低到高排序的。

命令格式
ZREVRANGEBYSCORE key max min [WITHSCORES]

注意这里的 maxmin 是按分数从高到低的顺序排列的,所以 max 应该是分数较高的边界,而 min 是分数较低的边界。

参数说明
  • key:有序集合的名称。
  • maxmin:指定分数范围的最大值和最小值。这两个参数支持以下用法:
    • 使用正数表示具体的分数值。
    • 使用 +inf 表示无限大,即包括所有大于 min 的分数。
    • 使用 -inf 表示无限小,即包括所有小于 max 的分数。
    • 在数字前加 ( 表示不包含该分数值本身(开区间)。
    • 在数字前加 [ 表示包含该分数值本身(闭区间,但默认就是闭区间,所以通常省略)。
  • [WITHSCORES]:一个可选参数,如果指定了这个选项,返回的成员会和它们的分数一起被返回。
返回值
  • 一个包含指定分数范围内成员的列表。如果指定了 WITHSCORES 选项,则返回每个成员后跟其分数的列表。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要获取分数在 3 到 1 之间(包括 3 但不包括 1)的成员及其分数:

redis> ZREVRANGEBYSCORE myzset 3 1 WITHSCORES
1) "c"
2) "3"
2) "b"
3) "2"

注意:在这个例子中,由于我们想要的是降序排列(分数从高到低),所以 max3min1。返回的结果包含了成员 “c” 和 “b” 以及它们的分数 “3” 和 “2”。

如果我们只想要获取成员而不带分数,可以省略 WITHSCORES 选项:

redis> ZREVRANGEBYSCORE myzset 3 1
1) "c"
2) "b"

这样,返回的结果就只包含了成员 “c” 和 “b”。

zrevrank key member

在 Redis 中,ZREVRANK 命令用于获取有序集合(sorted set)中指定成员的排名,但是该排名是基于分数从高到低排序的。与 ZRANK 命令相反,ZRANK 是基于分数从低到高排序的。

命令格式
ZREVRANK key member
参数说明
  • key:有序集合的名称。
  • member:要获取排名的成员。
返回值
  • 如果成员存在于有序集合中,则返回该成员的排名(从 0 开始,其中 0 是最高分的成员)。
  • 如果成员不存在于有序集合中,则返回 nil-1(具体取决于 Redis 的版本和配置)。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要获取成员 “c” 的排名(基于分数从高到低):

redis> ZREVRANK myzset c
(integer) 2

在这个例子中,成员 “c” 的分数是 3,它在有序集合 myzset 中的排名(从高到低)是 2(因为 “e” 和 “d” 的分数更高)。

如果我们尝试获取一个不存在的成员的排名:

redis> ZREVRANK myzset f
(nil)

或者在某些 Redis 版本中,可能会返回 -1 表示成员不存在:

redis> ZREVRANK myzset f
(integer) -1

zscore key member

在 Redis 中,ZSCORE 命令用于获取有序集合(sorted set)中指定成员的分数。如果成员存在于有序集合中,该命令将返回其分数;如果成员不存在,则返回 nil 或空值。

命令格式
ZSCORE key member
参数说明
  • key:有序集合的名称。
  • member:要获取分数的成员。
返回值
  • 如果成员存在于有序集合中,则返回该成员的分数。
  • 如果成员不存在于有序集合中,则返回 nil 或空值。
示例

假设我们有一个名为 myzset 的有序集合,其中存储了一些成员和它们的分数:

redis> ZADD myzset 1 a
redis> ZADD myzset 2 b
redis> ZADD myzset 3 c
redis> ZADD myzset 4 d
redis> ZADD myzset 5 e

现在,我们想要获取成员 “c” 的分数:

redis> ZSCORE myzset c
"3"

在这个例子中,成员 “c” 的分数是 3,所以 ZSCORE 命令返回了 "3"

如果我们尝试获取一个不存在的成员的分数:

redis> ZSCORE myzset f
(nil)

命令返回了 (nil),表示成员 “f” 不存在于有序集合 myzset 中。

zinterstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]

在 Redis 中,ZINTERSTORE 命令用于计算多个有序集合(sorted sets)的交集,并将结果存储在另一个有序集合中。这个命令在处理多个有序集合的交集运算时非常有用。

命令格式
ZINTERSTORE destination numkeys key1 [key2 ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]
参数说明
  • destination:结果集的目标键名,用于存储交集结果。
  • numkeys:接下来要指定的有序集合的数量。
  • key1 [key2 ...]:一个或多个有序集合的键名,用于计算交集。
  • WEIGHTS weight1 [weight2 ...](可选):每个有序集合的权重,用于计算带权重的交集。如果没有指定权重,则所有有序集合的权重默认为 1。
  • AGGREGATE SUM|MIN|MAX(可选):交集成员分数的聚合方式。默认为 SUM
    • SUM:交集成员的分数为它们在所有输入有序集合中的分数之和。
    • MIN:交集成员的分数为它们在所有输入有序集合中的分数的最小值。
    • MAX:交集成员的分数为它们在所有输入有序集合中的分数的最大值。
返回值
  • 交集结果集中元素的数量。
示例

假设我们有三个有序集合 zset1zset2zset3

redis> ZADD zset1 1 a 2 b 3 c
redis> ZADD zset2 2 b 3 c 4 d
redis> ZADD zset3 3 c 4 d 5 e

现在,我们想要计算 zset1zset2 的交集,并将结果存储在 zset_intersection 中:

redis> ZINTERSTORE zset_intersection 2 zset1 zset2
(integer) 2
redis> ZRANGE zset_intersection 0 -1 WITHSCORES
1) "b"
2) "2"
3) "c"
4) "3"

如果我们想要计算带权重的交集(比如,我们想要 zset1 的分数乘以 2,zset2 的分数乘以 3),并将结果存储在 zset_weighted_intersection 中:

redis> ZINTERSTORE zset_weighted_intersection 2 zset1 zset2 WEIGHTS 2 3
(integer) 2
redis> ZRANGE zset_weighted_intersection 0 -1 WITHSCORES
1) "b"
2) "10"  # 2 * 2 + 3 * 2
3) "c"
4) "15"  # 3 * 2 + 3 * 3

最后,如果我们想要改变聚合方式,比如使用 MIN 而不是 SUM,我们可以这样做:

redis> ZINTERSTORE zset_min_intersection 2 zset1 zset2 AGGREGATE MIN
(integer) 2
redis> ZRANGE zset_min_intersection 0 -1 WITHSCORES
1) "b"
2) "2"  # 最小值 2
3) "c"
4) "3"  # 最小值 3

zunionstore destination numkeys key1 [key2...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]

在 Redis 中,ZUNIONSTORE 命令用于计算多个有序集合(sorted sets)的并集,并将结果存储在另一个有序集合中。这个命令在处理多个有序集合的并集运算时非常有用。

命令格式
ZUNIONSTORE destination numkeys key1 [key2 ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]
参数说明
  • destination:结果集的目标键名,用于存储并集结果。
  • numkeys:接下来要指定的有序集合的数量。
  • key1 [key2 ...]:一个或多个有序集合的键名,用于计算并集。
  • WEIGHTS weight1 [weight2 ...](可选):每个有序集合的权重,用于计算带权重的并集。如果没有指定权重,则所有有序集合的权重默认为 1。
  • AGGREGATE SUM|MIN|MAX(可选):并集成员分数的聚合方式。默认为 SUM
    • SUM:并集成员的分数为它们在所有输入有序集合中的分数之和(如果成员只存在于一个集合中,则直接使用该集合的分数)。
    • MIN:并集成员的分数为它们在所有输入有序集合中的分数的最小值。
    • MAX:并集成员的分数为它们在所有输入有序集合中的分数的最大值。
返回值
  • 并集结果集中元素的数量。
示例

假设我们有三个有序集合 zset1zset2zset3

redis> ZADD zset1 1 a 2 b 3 c
redis> ZADD zset2 2 b 3 c 4 d
redis> ZADD zset3 3 c 4 d 5 e

现在,我们想要计算 zset1zset2zset3 的并集,并将结果存储在 zset_union 中:

redis> ZUNIONSTORE zset_union 3 zset1 zset2 zset3
(integer) 5
redis> ZRANGE zset_union 0 -1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"
9) "e"
10) "5"

如果我们想要计算带权重的并集(比如,我们想要 zset1 的分数乘以 2,zset2 的分数乘以 3,zset3 的分数乘以 4),并将结果存储在 zset_weighted_union 中:

redis> ZUNIONSTORE zset_weighted_union 3 zset1 zset2 zset3 WEIGHTS 2 3 4
(integer) 5
redis> ZRANGE zset_weighted_union 0 -1 WITHSCORES
1) "a"
2) "2"  # 1 * 2
3) "b"
4) "10"  # 2 * 2 + 2 * 3
5) "c"
6) "23"  # 3 * 2 + 3 * 3 + 3 * 4
7) "d"
8) "22"  # 4 * 3 + 4 * 4
9) "e"
10) "20"  # 5 * 4

最后,如果我们想要改变聚合方式,比如使用 MAX 而不是 SUM,我们可以这样做:

redis> ZUNIONSTORE zset_max_union 3 zset1 zset2 zset3 AGGREGATE MAX
(integer) 5
redis> ZRANGE zset_max_union 0 -1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"
9) "e"
10) "5"

注意,在使用 MAXMIN 聚合方式时,结果集中的分数是基于所有输入有序集合中该成员的最大或最小分数。由于成员 “a” 只存在于 zset1 中,所以它的分数在 zset_max_union 中仍然是 1。同样地,“b” 的分数是 2(因为 “b” 在 `zset1

zscan key cursor [MATCH pattern] [COUNT count]

ZSCAN 是 Redis 中的一个命令,用于迭代有序集合(sorted set)中的元素及其分数。与 KEYS 命令不同,ZSCAN 提供了一个基于游标的迭代器,可以在不阻塞 Redis 服务器的情况下安全地迭代大型数据集。

命令格式
ZSCAN key cursor [MATCH pattern] [COUNT count]
参数说明
  • key:要扫描的有序集合的名称。
  • cursor:游标,用于迭代。初始值为 0,每次调用 ZSCAN 时都会返回一个新的游标,直到游标返回 0 表示迭代完成。
  • MATCH pattern(可选):用于过滤返回的元素。只有符合给定模式的元素才会被返回。
  • COUNT count(可选):指定每次迭代返回的元素数量。这是一个提示,Redis 可能会返回更少或更多的元素。
返回值
  • 一个包含两个元素的数组:
    1. 新的游标。
    2. 一个数组,其中每个元素都是一个包含两个元素的数组,表示有序集合中的一个成员及其分数。
示例

假设我们有一个名为 myzset 的有序集合:

redis> ZADD myzset 1 a 2 b 3 c 4 d 5 e

我们可以使用 ZSCAN 来迭代这个有序集合:

redis> ZSCAN myzset 0
1) "0"
2) 1) "a"2) "1"3) "b"4) "2"5) "c"6) "3"7) "d"8) "4"9) "e"10) "5"

在这个例子中,由于有序集合很小,所以一次性返回了所有元素。但在大型有序集合中,你可能需要多次调用 ZSCAN 并使用返回的游标来继续迭代。

我们还可以使用 MATCH 参数来过滤结果:

redis> ZSCAN myzset 0 MATCH b*
1) "0"
2) 1) "b"2) "2"3) "c"4) "3"

在这个例子中,只有以 “b” 开头的成员(即 “b” 和 “c”)被返回。注意,虽然 “c” 不以 “b” 开头,但由于 Redis 的内部实现,它可能作为匹配 “b*” 的结果的一部分被返回。

你还可以使用 COUNT 参数来指定每次迭代返回的元素数量,但请注意这是一个提示,Redis 可能会返回不同数量的元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java GC问题排查的一些个人总结和问题复盘

个人博客 Java GC问题排查的一些个人总结和问题复盘 | iwts’s blog 是否存在GC问题判断指标 有的比较明显,比如发布上线后内存直接就起飞了,这种也是比较好排查的,也是最多的。如果单纯从优化角度,看当前应用是否需要优化&…

Unity实现首行缩进两个字符

效果 在Unity中如果想实现首行缩进两个字符&#xff0c;你会发现按空格是没法实现的。 实现原理&#xff1a;用空白的透明的字替代原来的位置。 代码&#xff1a; <color#FFFFFF00>XXX</color> 赶紧去试试吧&#xff01;

备战秋招—模拟版图面试题来了

随着暑期的脚步逐渐临近&#xff0c;电子工程和集成电路设计领域的毕业生们&#xff0c;也将迎来了另一个求职的黄金期——秋招。我们总说机会是留给有准备的人。对于有志于投身于模拟版图设计的学子们来说&#xff0c;为了在众多求职者中脱颖而出&#xff0c;充分备战模拟版图…

C# 工商银行缺少infosecapiLib.infosec

搜索Tlbimp.exe 这里使用4.8.1下的处理&#xff0c;以管理员身份打开powershell cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools".\TlbImp.exe "G:\CSharp\icbc-api-sdk-cop-c#\sdk-cop\sdk-cop\dll\infosecapi.dll" …

PCIe协议之-DLLP详解

✨前言&#xff1a; &#x1f31f;数据链路层的功能 数据链路层将从物理层中获得报文&#xff0c; 并将其传递给事务层&#xff1b; 同时接收事务层的报文&#xff0c; 并将其转发到物理层; 核心的功能有以下三点 1.保证TLP在 PCIe 链路中的正确传递; 2.数据链路层使用了容错…

杀死那个进程

一、场景 eclipse在启动tomcat时&#xff0c;出现端口被占用的情况。我寻思着“任务管理器”没出现相应程序在跑啊。 1.1问题&#xff1a;端口和进程的关系 端口和进程之间存在着一种关系&#xff0c;端口是一个逻辑概念&#xff0c;它用于标识网络通信中的一个终点&#xff0…

SEC突发:以太坊ETF大概率获批

美国证监会大概率批准以太坊现货ETF。 5月20日&#xff0c;据外媒CoinDesk报道&#xff0c;知情人士透露&#xff0c;美国SEC周一要求证券交易所更新以太坊现货ETF的19b-4备案文件。19b-4备案文件是一种表格&#xff0c;用于向SEC通报允许基金在交易所交易的规则变更。 三位消息…

利用cherry pick巧妙地将某次提交单独合并到其他分支

0. 引言 最近在进行系统的多版本并行开发&#xff0c;涉及一些共有基础功能提交时就遇到了麻烦&#xff0c;一份代码需要向多个版本分支进行同步&#xff0c;以保证多版本都能有更新该基础功能。 多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry…

「Python Socket超能力:网络世界的隐形斗篷!」

Hi&#xff0c;我是阿佑&#xff0c;今天将带领大家揭开Python Socket编程的神秘面纱&#xff0c;赋予我们的网络应用隐形斗篷般的超能力&#xff01; 深入探讨Socket编程的革命性力量&#xff0c;教你如何用Python的Socket模块来构建强大的网络应用。从简单的HTTP服务器到复杂…

MagicLens:新一代图像搜索技术和产品形态

MagicLens&#xff1a;Self-Supervised Image Retrieval with Open-Ended Instructions MagicLens: 自监督图像检索与开放式指令 作者&#xff1a;Kai Zhang&#xff0c; Yi Luan&#xff0c; Hexiang Hu&#xff0c; Kenton Lee&#xff0c; Siyuan Qiao&#xff0c; Wenhu …

在VS Code中进行Java的单元测试

在VS Code中可以使用 Test Runner for Java扩展进行Java的测试执行和调试。 Test Runner for Java的功能 Test Runner for Java 结合 Language Support for Java by Red Hat 和 Debugger for Java这两个插件提供如下功能&#xff1a; 运行测试&#xff1a; Test Runner for …

QT学习(20):QStyle和自定义样式

QStyle 样式&#xff08;继承自QStyle类&#xff09;代表控件的绘制并封装GUI的外观。QStyle是一个封装了GUI外观的抽象基类。Qt使用QStyle去执行几乎所有的内置控件的绘制&#xff0c;确保控件外观和原生控件风格风格相同。 class Q_WIDGETS_EXPORT QStyle : public QObject{…

【OpenCV】图像通道合并与分离,ROI

介绍可以实现图像通道合并与分离的API&#xff0c;这只是一种方式&#xff0c;后续还会介绍其他的合并与分离方法&#xff0c;以及ROI区域截取的方法。相关API&#xff1a; split() merge() Mat对象() 代码&#xff1a; #include "iostream" #include "ope…

MySQL进阶之(九)数据库的设计规范

九、数据库的设计规范 9.1 范式的概念9.1.1 范式概述9.1.2 键和相关属性 9.2 常见的范式9.2.1 第一范式9.2.2 第二范式9.2.3 第三范式9.2.4 第四范式9.2.5 第五范式&#xff08;域键范式&#xff09; 9.3 反范式化9.3.1 概述9.3.2 举例9.3.3 反范式化新问题9.3.4 通用场景 9.4 …

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化Glads水文数据处理

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化 0 引言1 Grace陆地水储量过程整合0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算地下水储量变化。本篇简单介绍…

2024.05.28学习记录

1. 小林coding 计网复习 2.代码随想录刷题. 图论.和复习数组.链表 3.rosebush完成select组件

景源畅信电商:做抖音运营怎么开始第一步?

在数字化时代的浪潮中&#xff0c;抖音作为一款短视频平台迅速崛起&#xff0c;成为许多人表达自我、分享生活的重要舞台。随着用户量的激增&#xff0c;如何做好抖音运营&#xff0c;尤其是迈出成功的第一步&#xff0c;成为了众多内容创作者和品牌主们关注的焦点。接下来&…

Web应用开发学习笔记————Vue框架

Vue框架快速入门 Vue入门 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue入门</title><!--引入vue.js文件--><script src"../js/vue.js"><…

就说说Java初学者求职准备项目的正确方式

当下不少Java初学者也知道求职时项目的重要程度&#xff0c;但在简历上写项目和准备面试项目时&#xff0c;真有可能走弯路&#xff0c;这样的话&#xff0c;加重学习负担还是小事&#xff0c;还真有可能导致无法入职。 1 对于在校生和应届生来说&#xff0c;你去跑通个学习项…

2024年4月—马克思主义基本原理概论真题及答案解析(上海自考)

目录 1.选择题 2.简答题 3.论述题 1.选择题 2.简答题