【Redis】Redis命令(三)

1.有序 Set 型操作命令

        有序 Set 中的每一个元素都有一个分值 score,Redis 会根据 score 的值对集合进行由小到大的排序。元素不能重复,但元素的 score 可以重复。由于该类型的所有命令均是字母 z 开头,所以该 Set 也称为 ZSet

     1.1.zadd

        1)命令:ZADD key score member [[score member] [score member] ...]

        2)功能:将一个或多个 member 元素及其 score 值加入到有序集 key 中的适当位置,score 值可以是整数值或双精度浮点数,若写入的 member 值已经存在,但 score 值不同,则新的 score 值将覆盖老 score

     1.2.zrange 与 zrevrange

        1)命令:ZRANGE key start stop [WITHSCORES] 或 ZREVRANGE key start stop [WITHSCORES]

        2)功能:返回有序集 key 中,指定区间内的成员。zrange 命令会按 score 值递增排序, zrevrange命令会按score递减排序。具有相同 score 值的成员按字典序/逆字典序排列。 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回。若 key 中指定范围内包含大量元素,则该命令可能会阻塞 Redis 服务,一般使用 zscan 命令代替

     1.3.zrangebyscore 与 zrevrangebyscore

        1)命令:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]                         ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

        2)功能:返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增/递减次序排列。具有相同 score 值的成员按 字典序/逆字典序排列。可选的 LIMIT 参数指定返回结果的数量及区间,注意当 offset 很大时,定位 offset 的操作可能需要遍历整 个有序集,此过程效率可能会较低。可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。默认闭区间,可以通过给参数前增加左括号“(”来使用可选的开区间

     1.4.zcard

        1)命令:ZCARD key

        2)功能:返回集合的长度

     1.5.zcount

        1)命令:ZCOUNT key min max

        2)功能:返回有序集 key 中,score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量

     1.6.zscore

        1)命令:ZSCORE key member

        2)功能:返回有序集 key 中,成员 member 的 score 值

     1.7.zincrby

        1)命令:ZINCRBY key increment member

        2)功能:为有序集 key 的成员 member 的 score 值加上增量 increment 。increment 值可以是整数值或双精度浮点数

     1.8.zrank 与 zrevrank

        1)命令:ZRANK key member 或 ZREVRANK key member

        2)功能:返回有序集 key 中成员 member 的排名。zrank 命令会按 score 值递增排序, zrevrank 命令会按 score 递减排序

     1.9.zrem

        1)命令:ZREM key member [member ...]

        2)功能:移除有序集 key 中的一个或多个成员,不存在的成员将被忽略

     1.10.zremrangebyrank

        1)命令:ZREMRANGEBYRANK key start stop

        2)功能:移除有序集 key 中,指定区间内的所有成员,包含 start 和 stop 在内

     1.11.zremrangebyscore

        1)命令:ZREMRANGEBYSCORE key min max

        2)功能:移除 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员

     1.12.zrangebylex

        1)命令:ZRANGEBYLEX key min max [LIMIT offset count]

        2)功能:该命令仅适用于集合中所有成员都具有相同分值的情况。当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的字典序来进行排序。即这个命令返回给定集合中元素值介于 min 和 max 之间的成员。如果 有序集合里面的成员带有不同的分值, 那么命令的执行结果与 zrange key 效果相同,合法的 min 和 max 参数必须包含左小括号“(”或左中括号“[”

     1.13.zlexcount

        1)命令:ZLEXCOUNT key min max

        2)功能:该命令返回该集合中key介于 min 和 max 范围内的元素数量

     1.14.zremrangebylex

        1)命令:ZREMRANGEBYLEX key min max

        2)功能:该命令会移除该集合中key介于 min 和 max 范围内的所有元素

     1.15.应用场景

        有序 Set 最为典型的应用场景就是排行榜

2.BitMap 操作命令

        该数据类型本质上就是一个仅包含 0 和 1 的二进制字符串。而其所有相关命令都是对这个字符串二进制位的操作。

     2.1.setbit

        1)命令:SETBIT key offset value

        2)功能:为给定 key 的 BitMap 数据的 offset 位置设置值为 value。其返回值为修改前该 offset 位置的 bitValue。offset 为给定key下 BitMap 的索引。对于原 BitMap 字符串中不存在的 offset 进行赋值,字符串会自动伸展以确保它可以将 value 保存在指定的 offset 上。当字符串值进行伸展时,空白位置以 0 填充,设置的 value 只能是 0 或 1。对使用较大 offset 的 SETBIT 操作 来说,内存分配过程可能造成 Redis 服务器被阻塞

     2.2.getbit

        1)命令:GETBIT key offset

        2)功能:对 key 所储存的 BitMap 字符串值,获取指定 offset 偏移量上的位值 bitValue

     2.3.bitcount

        1)命令:BITCOUNT key [start] [end]

        2)功能:统计给定字符串中被设置为 1 的 bit 位的数量。一般情况下,统计的范围是给定的整个 BitMap 字符串。但也可以通过指定额外的 start 或 end 参数,实现仅对指定字节范围内字符串进行统计,包括 start 和 end 在内。

     2.4.bitpos

        1)命令:BITPOS key bit [start] [end]

        2)功能:返回 key 指定的 BitMap 中第一个值为指定值 bit(非 0 即 1) 的二进制位的位置。 在默认情况下, 命令将检测整个 BitMap,也可以通过 start 参数和 end 参数指定要检测的范围

     2.5.bitop

        1)命令:BITOP operation destkey key [key …]

        2)功能:对一个或多个 BitMap 字符串 key 进行二进制位操作,将结果保存到 destkey 上,operation 可以是 AND(与操作) 、 OR (或操作)、 NOT(异或操作) 、 XOR(非操作) 这四种操作中的任意一种。除 NOT 操作之外,其他操作都可以接受一个或多个 BitMap 作为输入且其他对一个 BitMap 的操作其实就是一个复制。如果参与运算的多个 BitMap 长度不同,较短的 BitMap 会以 0 作为补充位与较长

      2.6.应用场景

        一般应用于大数据量的二值性统计。例如平台活跃 用户统计(访问或未访问)、支持率统计(支持或不支持)、员工考勤统计(上班或未上班)、图像二值化(黑或白)等。数据量较小的二值性统计并不适合 BitMap,可能使用 Set 更为合适

3.HyperLogLog 操作命令

        hyperlog log,超级日志记录。该数据类型可以简单理解为一个 set 集合,集合元素为字符串。但实际上 HyperLogLog 是一种基数计数概率算法,通过该算法可以利用极小的内存完成独立总数的统计。其所有相关命令都是对这个“set 集合”的操作

     3.1.pfadd

        1)命令:PFADD key element [element …]

        2)功能:将任意数量的元素添加到指定的 HyperLogLog 集合里面。如果内部存储被修改 了返回 1,否则返回 0

     3.2.pfcount

        1)命令:PFCOUNT key [key …]

        2)功能:该命令作用于单个 key 时,返回给定 key 的 HyperLogLog 集合的近似基数;该命 令作用于多个 key 时,返回所有给定 key 的 HyperLogLog 集合的并集的近似基数;如果 key 不存在,则返回 0

     3.3.pfmerge

        1)命令:PFMERGE destkey sourcekey [sourcekey …]

        2)功能:将多个 HyperLogLog 集合合并为一个 HyperLogLog 集合,并存储到 destkey 中, 合并后的 HyperLogLog 的基数接近于所有 sourcekey 的 HyperLogLog 集合的并集

     3.4.应用场景

        HyperLogLog 可对数据量超级庞大的日志数据做不精确的去重计数统计

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值