专栏名称: 闲云野鹤_23dd
今天看啥  ›  专栏  ›  闲云野鹤_23dd

rides学习练习笔记2

闲云野鹤_23dd  · 简书  ·  · 2020-12-22 09:30

文章预览

ZADD 创建有序集合并添加值
ZRANGE 根据下标查询有序集合,score值正序排
ZREVRANGE 根据下标查询有序集合,score值倒序排

作业

  1. 创建有序集合z1,添加值 1 a,2 b, 3 c
    ZADD z1 1 a 2 b 3 c
  2. 查询 z1 的所有值,不带 score值
    ZRANGE z1 0 -1
  3. 查询 z1 的所有值,带 score值,并且从小到大排
    ZRANGE z1 0 -1
  4. 查询 z1 的所有值,带 score值,并且从大到小排
    ZREVRANGE z1 0 -1

ZSCORE 返回有序集合中指定元素的score值
ZINCRBY 增量调整有序集合中元素的score值
ZCARD 返回有序集合中的元素个数

作业

  1. 查看 z1中 a 的score值
    ZSCORE z1 a
  2. 查看 z1中 c 的score值
    ZSCORE z1 c
  3. 给 z1 中的 a 的score值 增量调整 10
    ZINCRBY z1 10 a
  4. 给 z1 中的 a 的score值 增量调整 -1
    ZINCRBY z1 -1 a
  5. 查看 z1中 a 的score值
    ZSCORE z1 a
  6. 查看 z1中 c 的score值
    ZSCORE z1 c
  7. 查看 z1 中有多少个元素
    ZCARD z1

ZCOUNT 返回score值 之间的成员数量
ZRANGEBYSCORE 返回score值区间范围的成员,并按score值递增排列
ZREVRANGEBYSCORE 返回score值区间范围的成员,并按score值递减排列

作业

  1. 新建 z2 有序集合 并添加成员: 1 a,2 b,3 c,4 d,5 e,6 f, 7 g
    ZADD z2 1 a 2 b 3 c 4 d 5 e 6 f 7 g
  2. 统计 z2 有多少成员数量
    ZCOUNT z2 1 7
  3. 查询 z2 的 score值 2 到6 的成员,并按score值递增排列
    ZRANGEBYSCORE z2 2 6
  4. 查询 z2 的 score值 2 到6 的成员,并按score值递减排列
    ZREVRANGEBYSCORE z2 6 2
  5. 查询 z2 的所有成员,按score值递减排列
    ZREVRANGEBYSCORE z2 +inf -inf

ZRANK 返回有序集合按score值递增排列的 排名
ZREVRANK 返回有序集合按score值递减排列的 排名

作业

  1. 查看z2 中c的排名,按score递增排名
    ZRANK z2 c
  2. 查看z2 中c的排名,按score递减排名
    ZREVRANK z2 c
  3. 查看z2 中g的排名,按score递增排名
    ZRANK z2 g
  4. 查看z2 中g的排名,按score递增排名
    ZREVRANK z2 g

重点

ZREM 移除有序集合中的一个或多个成员
ZREMRANGEBYRANK 按照下标移除 有序集合中的成员
ZREMRANGEBYSCORE 按照score区间移除有序集合中的成员

作业

  1. 删除 z2 中的 a , c 两个成员
    ZREM z2 a c
  2. 删除z2 中的 前两个成员
    ZREMRANGEBYRANK z2 0 1
  3. 删除z2 中的 最后一个成员
    ZREMRANGEBYRANK z2 -1 -1
  4. 删除z2 中 score值 1到5的成员
    ZREMRANGEBYSCORE z2 1 5

重点

ZRANGEBYLEX 按照有序集合中的 key 的区间来查询,如果score值相同则按照字典序排列
ZLEXCOUNT 统计有序集合中key的区间元素数量
ZREMRANGEBYLEX 按照有序集合中的 key 的区间 来删除元素

区间规范:

  • 代表正无限, - 代表负无限
    ( 表示开区间(指定的值不会被包含在范围之内), 而 [ 则表示闭区间(指定的值会被包含在范围之内)

以上三个命令最好在 有序集合的 所有元素分值相同的情况下使用

作业

添加有序集合 :

ZADD zseta 0 a 0 b 0 c 0 d 0 e 0 f 0 g 1 x 2 y 3 z 4 n 5 m

  1. 查询 zseta 中 a 到 e 之间的元素,不包含 a 和 e 本身
    ZRANGEBYLEX zseta (a (e
  2. 查询 zseta 中 f 到 z 之间的元素,包含 f 和 z 本身
    ZRANGEBYLEX zseta [f [z
  3. 统计 zseta 中 b 之后一共有多少元素,不包含b本身
    ZLEXCOUNT zseta (b +
  4. 统计 zseta 中 z 之前 一共有多少元素 包含 z 本身
    ZLEXCOUNT zseta - [z
  5. 删除 z 之后的所有元素,不包含 z 本身
    ZREMRANGEBYLEX zseta - (z
  6. 删除 b 到 g 之间的元素,不包含 b 和 g 本身
    ZREMRANGEBYLEX zseta (b (g

ZUNIONSTORE 查询多个集合的并集,并存储到一个新的集合中.

  • WEIGHTS子句:给每个集合的分值指定一个乘法因子

  • AGGREGATE子句:如果并集中存在相同的key,分值可以选择 相加,取最大,取最小三种情况

ZINTERSTORE 查询多个集合的交集,并存储到一个新的集合中.同样可以使用WEIGHTS和AGGREGATE子句.

作业

准备数据:

DEL z1 z2
ZADD z1 2 a 3 b 4 c
ZADD z2 5 a 6 d 7 e
查询 z1 和 z2 的并集,并存储到 zx1 中
zunionstore zx1 3 z1 z2
查询 z1 和 z2 的并集,并将 z1的分值乘3, z2的分值乘 4.存储到 zx2 中
zunionstore zx2 3 z1 z2 weights 3 4
查询 z1 和 z2 的交集,分值选择最小的,存储到zx3中
zunionstore zx3 3 z1 z2 ahhregate min
查询 z1 和 z2 的交集,分值选择最大的,存储到zx3中
zunionstore zx3 3 z1 z2 ahhregate max

掌握scan命令,了解 count和 match子句的含义

作业

  1. 使用SCAN 命令 读取s开头的key,每次读取20个元素
    SCAN 0 MATCH s* COUNT 20
  2. 使用SCAN 命令 遍历所有的key,每次读取6个
    SCAN 0 MATCH COUNT 6

遍历set1中所有的key,每次读取5个元素
SSCAN set1 0 count 5
遍历set1中以 a 开头的key,每次读取 7个元素
SSCAN set1 0 match a* count 7
遍历set1中以 1 结尾的key,每次读取 20个元素
SSCAN set1 0 match *1 count 20

遍历hash1 中以3 结尾的元素
遍历hash1 中以c开头的元素,每次读取 6 个元素
遍历hash1 中以b开头的元素,每次读取 3 个元素

遍历hash1 中以3 结尾的元素 ----HSCAN hash1 0 match 3
遍历hash1 中以c开头的元素,每次读取 6 个元素----HSCAN hash1 0 match c
count 6
遍历hash1 中以b开头的元素,每次读取 3 个元素----HSCAN hash1 0 match b* count 3
127.0.0.1:6379[11]› HSCAN hash1 0 match *3

  1. "0"
  2. (empty list or set)
    127.0.0.1:6379[11]› HSCAN hash1 0 match c* count 6
  3. "0"
    1. "c"
    2. "C"
    3. "c1"
    4. "C1"
    5. "c2"
    6. "C2"
      127.0.0.1:6379[11]› HSCAN hash1 0 match b* count 3
  4. "0"
    1. "b"
    2. "B"
    3. "b1"
    4. "B1"
    5. "b2"
    6. "B2"
      127.0.0.1:6379[11]›

DBSIZE : 返回当前库位key的数量
FLUSHDB : 清空 当前库位所有key的数量
FLUSHALL:清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。

作业

  1. 查看当前库位 有多少key
    dbsize
  2. 切换到10库位,清空当前库位的key
    SELECT 10
    FLUSHDB
    例子
    redis> DBSIZE # 0 号数据库的 key 数量
    (integer) 9

redis> # 切换到 1 号数据库
OK

redis[1]> DBSIZE # 1 号数据库的 key 数量
(integer) 6

redis[1]> flushall

………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览