本次讲解要点:
** Set相关命令:是指value中的数据类型**
启动redis服务器:
打开小黑窗:
C:\Users\JH>e:
E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin
E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redis.windows.conf
启动redis客户端:
小黑窗:redis-cli
★ Redis的数据类型(都是针对Redis的value而言)
redis和map差不多。
Map 只能保存在内存中,
redis可以保存在磁盘。
Redis的key都是String
▲ value支持如下5种数据类型:
String: 最基本的数据类型,可保存任何的数据。
List: 元素是String的有序集合,集合内的元素可以重复。
Set: 元素是String的无序集合,集合内的数据不能重复。
Zset: 元素是String的有序集合,集合内的数据不能重复。
Hash: 也是key-value集合(类似Java的Map),key和value都是String类型的数据。这种类型主要用于保存对象。
Redis为不同数据类型提供了不同的操作命令,因此特定类型的数据需要使用对应类型的命令来执行操作。
★ ZSet相关的命令
zset 和 set 的区别:
ZSet相当于Set的增强版,它会每个元素都分配一个double类型的score(分数),并按该score对集合中元素排序。有点类似于TreeSet。
ZSet集合内元素不允许重复,但元素的score是可以重复的。
分数大的排前面
ZADD key score member [score member …]: 向ZSet添加一个或多个元素,或更新已有的元素的score。
ZCARD key: 返回key对应的ZSet中元素的个数
ZCOUNT key min max: 返回ZSet的score位于min到max之间的元素个数。
ZDIFF numkeys key [key …] [WITHSCORES]: 计算给定ZSet之间的差值。该命令要Redis 6.2+才可用。
ZDIFFSTORE destination numkeys key [key …]: ZDIFF的存储版本,
将给定ZSet的差值保存到destination中。该命令要Redis 6.2+才可用。
ZINCRBY key increment member: 将memeber元素的score增加increment。
随着元素的score的改变,ZSet中元素的顺序也会随之改变。
ZINTER numkeys key [key …]: 计算给定ZSet的交集。该命令要Redis 6.2+才可用。
ZINTERSTORE destination numkeys key [key …]: ZINTER的存储版本,
将给定ZSet的交集保存到destination中。交集中元素的score是相同元素的score之和。
ZLEXCOUNT key min max: 返回ZSet内按字典排序时从min到max之间所有元素的个数。
一般用于对ZSet中所有元素的score都相等时进行处理。
min:可支持的写法: - 代表最小值。[字符串, 代表包含边界。(字符串,代表不包含边界。
max:可支持写法:+代表最大值,[字符串, 代表包含边界。(字符串,代表不包含边界。提示:当向ZSet添加多个score相等的元素时,ZSet就会使用字典顺序(英文字典中字母的排序方式)对这些元素排序,此时就可按字典顺序来获取指定范围内元素的个数。
ZPOPMAX key [count]: 弹出ZSet中分数最大的元素。
BZPOPMAX key [key…] timeout: ZPOPMAX的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
ZPOPMIN key [count]: 弹出ZSet中分数最小的元素。
BZPOPMIN key [key …] timeout: ZPOPMIN的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
ZRANGE key start stop [WITHSCORES]: 返回ZSet内从start索引到stop索引范围内的元素(及score)。
索引支持负数,负数表示从最后面开始,比如-1代表最后一个元素。
类似于List的LRange命令。
ZRANGEBYLEX key min max [LIMIT offset count]: 返回ZSet内按字典排序时从min到max之间的所有元素。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]: 返回ZSet内分数从min到max之间的所有元素。
ZRANK key member: 返回ZSet内指定元素的索引。score最小的索引是0。
ZREM key member [member …]: 删除ZSet内一个或多个元素。
ZREMRANGEBYLEX key min max: 按字典排序删除ZSet从min到max之间的所有元素。
ZREMRANGEBYRANK key start stop: 删除ZSet内从start索引到stop索引之间的所有元素。
ZREMRANGEBYSCORE key min max: 删除ZSet内score位于min到max之内的所有元素。
ZREVRANGE key start stop [WITHSCORES]: ZRANGE的反向版本。
ZREVRANGEBYLEX key max min [LIMIT offset count]: ZRANGEBYLEX的反向版本。
ZREVRANGEBYSCORE key max min [WITHSCORES]: ZRANGEBYSCORE的反向版本。
ZREVRANK key member: ZRANK的反向版本。score最大的反向索引反而是0。
ZSCORE key member: 获取指定元素的score。
ZUNION numkeys key [key …]: 计算给定ZSet的并集。该命令要Redis 6.2+才可用。
ZUNIONSTORE destination numkeys key [key …]: ZUNION的存储版本,将给定ZSet的并集保存到destination中。
ZMSCORE key member [member …]: 获取多个元素的score,该命令要Redis 6.2+才可用。
ZSCAN key cursor [MATCH pattern] [COUNT count]:
使用cursor遍历key对应的ZSet。pattern指定只遍历匹配pattern的元素。
注意:实际上该count选项根本不起作用。因为redis的设计在遍历Zet、Hash,总会将所有的元素在一次遍历时就返回出来。【注意点:】:在Zset中,将元素的位置索引称为RANK,排在第一位的(score最小的元素)的RANK是0。
演示:
ZADD key score member [score member …]: 向ZSet添加一个或多个元素,或更新已有的元素的score。
ZCARD key: 返回key对应的ZSet中元素的个数
ZCOUNT key min max: 返回ZSet的score位于min到max之间的元素个数。
ZINCRBY key increment member: 将memeber元素的score增加increment。
随着元素的score的改变,ZSet中元素的顺序也会随之改变。
就是给某个元素增加分数
ZINTERSTORE destination numkeys key [key …]: ZINTER的存储版本,
将给定ZSet的交集保存到destination中。交集中元素的score是相同元素的score之和。
这里的 numkeys 就是如果是两个集合要进行查询交集的部分,那么这个 numkeys 就要写为 2,
3个zset集合要查交集,那么numkeys就是3
ZLEXCOUNT key min max: 返回ZSet内按字典排序时从min到max之间所有元素的个数。
注意点:一般用于对ZSet中 所有元素的score都相等 时进行处理。
min:可支持的写法: - 代表最小值。[ 字符串, 代表包含边界。(字符串,代表不包含边界。
max:可支持写法:+代表最大值,[ 字符串, 代表包含边界。(字符串,代表不包含边界。
提示:
当向ZSet添加多个score相等的元素时,
ZSet就会使用 字典顺序(字典顺序:英文字典中字母的排序方式)对这些元素排序,
此时就可按字典顺序来获取指定范围内元素的个数。
ZPOPMAX key [count]: 弹出ZSet中分数最大的元素。并回显
BZPOPMAX key [key…] timeout: ZPOPMAX的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
ZPOPMIN key [count]: 弹出ZSet中分数最小的元素。
BZPOPMIN key [key …] timeout: ZPOPMIN的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
ZRANGE key start stop [WITHSCORES]: 返回ZSet内从start索引到stop索引范围内的元素(及score)。
索引支持负数,负数表示从最后面开始,比如-1代表最后一个元素。
类似于List的LRange命令。
ZRANGEBYLEX key min max [LIMIT offset count]: 返回ZSet内按字典排序时从min到max之间的所有元素。
提示:
当向ZSet 添加多个score相等的元素时,
ZSet就会使用 字典顺序(字典顺序:英文字典中字母的排序方式)对这些元素排序,
此时就可按字典顺序来获取指定范围内元素的个数。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]: 返回ZSet内分数从min到max之间的所有元素。
ZRANK key member: 返回ZSet内指定元素的索引。score最小的索引是0。
ZREM key member [member …]: 删除ZSet内一个或多个元素。
ZREMRANGEBYLEX key min max: 按字典排序删除ZSet从min到max之间的所有元素。
ZREMRANGEBYRANK key start stop: 删除ZSet内从start索引到stop索引之间的所有元素。
ZREMRANGEBYSCORE key min max: 删除ZSet内score位于min到max之内的所有元素。
ZSCORE key member: 获取指定元素的score。
ZSCAN key cursor [MATCH pattern] [COUNT count]:
使用cursor遍历key对应的ZSet。pattern指定只遍历匹配pattern的元素。
注意:实际上该count选项根本不起作用。因为redis的设计在遍历Zet、Hash,总会将所有的元素在一次遍历时就返回出来。
【注意点:】:在Zset中,将元素的位置索引称为RANK,排在第一位的(score最小的元素)的RANK是0。