【Redis】004-Redis五大数据类型:Set集合、Hash类型、Zset有序集合

曾经终败给现在 2023-10-05 11:43 34阅读 0赞

目录

一、Set集合类型详解

1、概述

2、添加元素

格式:

演示:

3、获取set集合的元素

格式:

演示:

4、判断某个元素是否存在于某set集合中

格式:

演示:

5、获取set集合中元素的个数

格式:

演示:

6、移除指定的元素

格式:

演示:

7、随机获取set集合中的一个元素

格式:

演示:

8、随机获取指定个数的元素

格式:

演示:

9、随机移除一个元素(随机移除指定数量的元素)

格式:

演示:

10、将一个set集合中的指定元素移动到另一个集合里面

格式:

演示:

11、set集合的差集、交集、并集

格式:

演示:

二、Hash(哈希)类型详解

1、概述

2、添加和获取值

格式:

演示:

3、批量添加

格式:

演示:

4、批量获取

格式:

演示:

5、获取全部是数据

格式:

演示:

6、删除指定key的字段(对应的value也随之删除)

格式:

演示:

7、获取hash表的字段数量

格式:

演示:

8、判断hash中的指定字段是否存在

格式:

演示:

9、获取hash的所有字段

格式:

演示:

10、获取hash的所有字段

格式:

演示:

11、自增、自减

格式:

演示:

12、如果不存在则添加(类似String字符串)

格式:

演示:

13、使用场景

例如:

三、Zset(有序集合)

1、概述

2、添加、获取

3、排序

4、附带信息的排序

5、降序排序

6、移除指定元素

7、获取zset集合的元素数量

8、统计存于一个范围的元素的数量

9、备注

10、应用思路


一、Set集合类型详解

1、概述

set集合是无序的;

set集合里面的值是不允许重复的;

set相关命令都是以s开头的;

2、添加元素

格式:

  1. sadd key value

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70

3、获取set集合的元素

格式:

  1. smembers key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 1

4、判断某个元素是否存在于某set集合中

格式:

  1. sismember key value

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 2

5、获取set集合中元素的个数

格式:

  1. scard key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 3

6、移除指定的元素

格式:

  1. srem key value

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 4

7、随机获取set集合中的一个元素

格式:

  1. srandmember key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 5

8、随机获取指定个数的元素

格式:

  1. srandmember key number

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 6

9、随机移除一个元素(随机移除指定数量的元素)

格式:

  1. spop key (number)

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 7

10、将一个set集合中的指定元素移动到另一个集合里面

格式:

  1. smove key1 key2 value
  2. # key1指的是原集合,key2指的是目标集合,value指的是指定的要移动的元素

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 8

11、set集合的差集、交集、并集

格式:

  1. sdiff key1 key2
  2. # key1 - key2
  3. sinter key1 key2
  4. # key1与key2交集
  5. sunion key1 key2
  6. # key1与key2并集

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 9

二、Hash(哈希)类型详解

1、概述

类似于一个Key-Map集合,key-,也是key-vlaue集合,这是value是一个map;

相关操作以h开头;

这是一个集合!并非一个单一的值!

2、添加和获取值

格式:

  1. hset key field value
  2. # 存
  3. hget key field
  4. # 取

演示:

2020101521240834.png

3、批量添加

格式:

  1. hmset key field1 v1 field2 v2 。。。 以此类推即可

演示:

20201015212638655.png

4、批量获取

格式:

  1. hmget key field1 field2 field3 。。。以此类推即可

演示:

20201015212807793.png

5、获取全部是数据

格式:

  1. hgetall key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 10

6、删除指定key的字段(对应的value也随之删除)

格式:

  1. hdel key field

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 11

7、获取hash表的字段数量

格式:

  1. hlen key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 12

8、判断hash中的指定字段是否存在

格式:

  1. hexists key field

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 13

9、获取hash的所有字段

格式:

  1. hkeys hash

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 14

10、获取hash的所有字段

格式:

  1. hvals key

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 15

11、自增、自减

格式:

  1. hincrby key field num
  2. # 自增num为正数,自减num为负数

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 16

12、如果不存在则添加(类似String字符串)

格式:

  1. hsetnx key field value

演示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5Njg5MzQz_size_16_color_FFFFFF_t_70 17

13、使用场景

变更数据,name,age,sex等等;

hash更适合存储对象;

String更适合字符串存储;

例如:

20201015220600970.png

三、Zset(有序集合)

1、概述

在set的基础上增加了一个值,set k1 v1 zset k1 score1 v1;

命令以z开头;

2、添加、获取

  1. 127.0.0.1:6379> zadd zset 1 hello # 添加一个元素
  2. (integer) 1
  3. 127.0.0.1:6379> zadd zset 2 zibo 3 world 4 dog # 添加多个元素
  4. (integer) 3
  5. 127.0.0.1:6379> zrange zset 0 -1 # 获取所有元素
  6. 1) "hello"
  7. 2) "zibo"
  8. 3) "world"
  9. 4) "dog"

3、排序

  1. 127.0.0.1:6379> zrangebyscore zset -inf +inf # 按照score排序,从负无穷到正无穷
  2. 1) "hello"
  3. 2) "zibo"
  4. 3) "world"
  5. 4) "dog"

4、附带信息的排序

  1. 127.0.0.1:6379> zrangebyscore zset -inf +inf withscores
  2. 1) "hello"
  3. 2) "1"
  4. 3) "zibo"
  5. 4) "2"
  6. 5) "world"
  7. 6) "3"
  8. 7) "dog"
  9. 8) "4"

5、降序排序

  1. 127.0.0.1:6379> zrevrangebyscore zset +inf -inf withscores
  2. 1) "dog"
  3. 2) "4"
  4. 3) "world"
  5. 4) "3"
  6. 5) "zibo"
  7. 6) "2"
  8. 7) "hello"
  9. 8) "1"

6、移除指定元素

  1. 127.0.0.1:6379> zrange zset 0 -1
  2. 1) "hello"
  3. 2) "zibo"
  4. 3) "world"
  5. 4) "dog"
  6. 127.0.0.1:6379> zrem zset zibo
  7. (integer) 1
  8. 127.0.0.1:6379> zrange zset 0 -1
  9. 1) "hello"
  10. 2) "world"
  11. 3) "dog"

7、获取zset集合的元素数量

  1. 127.0.0.1:6379> zcard zset
  2. (integer) 3

8、统计存于一个范围的元素的数量

  1. 127.0.0.1:6379> zrange zset 0 -1
  2. 1) "hello"
  3. 2) "zibo"
  4. 3) "world"
  5. 4) "dog"
  6. 127.0.0.1:6379> zrem zset zibo
  7. (integer) 1
  8. 127.0.0.1:6379> zeange zset 0 -1
  9. (error) ERR unknown command 'zeange'
  10. 127.0.0.1:6379> zrange zset 0 -1
  11. 1) "hello"
  12. 2) "world"
  13. 3) "dog"
  14. 127.0.0.1:6379> zcard zset
  15. (integer) 3
  16. 127.0.0.1:6379> zcount zset 2 4
  17. (integer) 2
  18. 127.0.0.1:6379>

9、备注

其他的api,可以到官网去查看;

10、应用思路

班级成绩、公司工资排序;

带权重的消息;

排行榜;

发表评论

表情:
评论列表 (有 0 条评论,34人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis有序集合zset

    介绍 有序集合保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作