Redis数据结构和主要命令( 四 )


慎用的 Sorted Set 相关命令:
ZRANGE/ZREVRANGE:返回指定 Sorted Set 中指定排名范围内的所有 member 。
ZRANGE 为按 score 升序排序 , ZREVRANGE 为按 score 降序排序 , 时间复杂度
O(log(N)+M) , M 为本次返回的 member 数
ZRANGEBYSCORE/ZREVRANGEBYSCORE:返回指定 Sorted Set 中指定 score 范围内的所有 member , 返回结果以升序 / 降序排序 。
min 和 max 可以指定为 - inf 和 + inf , 代表返回所有的 member 。时间复杂度 O(log(N)+M)
ZREMRANGEBYRANK/ZREMRANGEBYSCORE:移除 Sorted Set 中指定排名范围 / 指定 score 范围内的所有 member 。时间复杂度 O(log(N)+M)
上述几个命令 , 应尽量避免传递 [0 -1] 或 [-inf +inf] 这样的参数 , 来对 Sorted Set 做一次性的完整遍历 , 特别是在 Sorted Set 的尺寸不可预知的情况下 。
可以通过 ZSCAN 命令来进行游标式的遍历 , 或通过 LIMIT 参数来限制返回 member 的数量(适用于 ZRANGEBYSCORE 和 ZREVRANGEBYSCORE 命令) , 以实现游标式的遍历 。
常用命令七:Bitmap 和 HyperLogLog
Redis 的这两种数据结构相较之前的并不常用 , 在 Redis 中不是一种实际的数据类型 , 而是一种将 String 作为 Bitmap 使用的方法 。
可以理解为将 String 转换为 bit 数组 。使用 Bitmap 来存储 true/false 类型的简单数据极为节省空间 。
HyperLogLogs 是一种主要用于数量统计的数据结构 , 它和 Set 类似 , 维护一个不可重复的 String 集合 。
但是 HyperLogLogs 并不维护具体的 member 内容 , 只维护 member 的个数 。
也就是说 , HyperLogLogs 只能用于计算一个集合中不重复的元素数量 , 所以它比 Set 要节省很多内存空间 。
其他常用命令
EXISTS:判断指定的 key 是否存在 , 返回 1 代表存在 , 0 代表不存在 , 时间复杂度 O(1)
DEL:删除指定的 key 及其对应的 value , 时间复杂度 O(N) , N 为删除的 key 数量
EXPIRE/PEXPIRE:为一个 key 设置有效期 , 单位为秒或毫秒 , 时间复杂度 O(1)
TTL/PTTL:返回一个 key 剩余的有效时间 , 单位为秒或毫秒 , 时间复杂度 O(1)
RENAME/RENAMENX:将 key 重命名为 newkey 。使用 RENAME 时 , 如果 newkey 已经存在 , 其值会被覆盖;使用 RENAMENX 时 , 如果 newkey 已经存在 , 则不会进行任何操作 , 时间复杂度 O(1)
TYPE:返回指定 key 的类型 , string, list, set, zset, hash 。时间复杂度 O(1)
CONFIG GET:获得 Redis 某配置项的当前值 , 可以使用 * 通配符 , 时间复杂度 O(1)
CONFIG SET:为 Redis 某个配置项设置新值 , 时间复杂度 O(1)
CONFIG REWRITE:让 Redis 重新加载 redis.conf 中的配置
来源:kelgon
 




推荐阅读