首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Redis】004-Redis五大数据类型:Set集合、Hash类型、Zset有序集合

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

作者头像
訾博ZiBo
发布2025-01-06 15:59:55
发布2025-01-06 15:59:55
9330
举报

一、Set集合类型详解

1、概述

set集合是无序的;

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

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

2、添加元素

格式:
代码语言:javascript
复制
sadd key value
演示:

3、获取set集合的元素

格式:
代码语言:javascript
复制
smembers key
演示:

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

格式:
代码语言:javascript
复制
sismember key value
演示:

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

格式:
代码语言:javascript
复制
scard key
演示:

6、移除指定的元素

格式:
代码语言:javascript
复制
srem key value
演示:

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

格式:
代码语言:javascript
复制
srandmember key
演示:

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

格式:
代码语言:javascript
复制
srandmember key number
演示:

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

格式:
代码语言:javascript
复制
spop key (number)
演示:

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

格式:
代码语言:javascript
复制
smove key1 key2 value

# key1指的是原集合,key2指的是目标集合,value指的是指定的要移动的元素
演示:

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

格式:
代码语言:javascript
复制
sdiff key1 key2

# key1 - key2

sinter key1 key2

# key1与key2交集

sunion key1 key2

# key1与key2并集
演示:

二、Hash(哈希)类型详解

1、概述

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

相关操作以h开头;

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

2、添加和获取值

格式:
代码语言:javascript
复制
hset key field value

# 存

hget key field

# 取
演示:

3、批量添加

格式:
代码语言:javascript
复制
hmset key field1 v1 field2 v2 。。。 以此类推即可
演示:

4、批量获取

格式:
代码语言:javascript
复制
hmget key field1 field2 field3 。。。以此类推即可
演示:

5、获取全部是数据

格式:
代码语言:javascript
复制
hgetall key
演示:

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

格式:
代码语言:javascript
复制
hdel key field
演示:

7、获取hash表的字段数量

格式:
代码语言:javascript
复制
hlen key
演示:

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

格式:
代码语言:javascript
复制
hexists key field
演示:

9、获取hash的所有字段

格式:
代码语言:javascript
复制
hkeys hash
演示:

10、获取hash的所有字段

格式:
代码语言:javascript
复制
hvals key
演示:

11、自增、自减

格式:
代码语言:javascript
复制
hincrby key field num

# 自增num为正数,自减num为负数
演示:
12、如果不存在则添加(类似String字符串)
格式:
代码语言:javascript
复制
hsetnx key field value
演示:

13、使用场景

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

hash更适合存储对象;

String更适合字符串存储;

例如:

三、Zset(有序集合)

1、概述

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

命令以z开头;

2、添加、获取

代码语言:javascript
复制
127.0.0.1:6379> zadd zset 1 hello # 添加一个元素
(integer) 1
127.0.0.1:6379> zadd zset 2 zibo 3 world 4 dog # 添加多个元素
(integer) 3
127.0.0.1:6379> zrange zset 0 -1 # 获取所有元素
1) "hello"
2) "zibo"
3) "world"
4) "dog"

3、排序

代码语言:javascript
复制
127.0.0.1:6379> zrangebyscore zset -inf +inf # 按照score排序,从负无穷到正无穷
1) "hello"
2) "zibo"
3) "world"
4) "dog"

4、附带信息的排序

代码语言:javascript
复制
127.0.0.1:6379> zrangebyscore zset -inf +inf withscores
1) "hello"
2) "1"
3) "zibo"
4) "2"
5) "world"
6) "3"
7) "dog"
8) "4"

5、降序排序

代码语言:javascript
复制
127.0.0.1:6379> zrevrangebyscore zset +inf -inf withscores
1) "dog"
2) "4"
3) "world"
4) "3"
5) "zibo"
6) "2"
7) "hello"
8) "1"

6、移除指定元素

代码语言:javascript
复制
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "zibo"
3) "world"
4) "dog"
127.0.0.1:6379> zrem zset zibo
(integer) 1
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "world"
3) "dog"

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

代码语言:javascript
复制
127.0.0.1:6379> zcard zset
(integer) 3

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

代码语言:javascript
复制
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "zibo"
3) "world"
4) "dog"
127.0.0.1:6379> zrem zset zibo
(integer) 1
127.0.0.1:6379> zeange zset 0 -1
(error) ERR unknown command 'zeange'
127.0.0.1:6379> zrange zset 0 -1
1) "hello"
2) "world"
3) "dog"
127.0.0.1:6379> zcard zset
(integer) 3
127.0.0.1:6379> zcount zset 2 4
(integer) 2
127.0.0.1:6379>

9、备注

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

10、应用思路

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

带权重的消息;

排行榜;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
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、应用思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档