数据库集合相关命令有哪些

54次阅读
没有评论

共计 2333 个字符,预计需要花费 6 分钟才能阅读完成。

本篇内容介绍了“数据库集合相关命令有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

集合的性质: 唯一性, 无序性, 确定性
无序性,例:{1,2}=={2,1}
唯一性,每一个值都是唯一的

例:插入“python”,“golang”,“python ,“c”, java 5 个值,但实际上,Redis 返回的数字 4,表示实际上只插入了 4 个值。这是因为有两个“python”,集合自动过滤了第 2 个 python”。

注: 在 string 和 link 的命令中, 可以通过 range 来访问 string 中的某几个字符或某几个元素
但, 因为集合的无序性, 无法通过下标或范围来访问部分元素.

因此想看元素, 要么随机先一个, 要么全选

sadd key  value1 value2

作用: 往集合 key 中增加元素

sadd 命令在遇到数据己经存在时,会返回“0”,如果数据不存在则把数据插入再返回 1。所以,这条命令可以通过返回的数字来判断数据是否存在。

srem value1 value2

作用: 删除集合中集为 value1 value2 的元素
返回值: 忽略不存在的元素后, 真正删除掉的元素的个数

spop key

作用: 返回并删除集合中 key 中 1 个随机元素
随机 – 体现了无序性

(spop 会弹出 / 删除 key 中的元素,可以用这个来抽奖,第一名抽出来,第二名,第三名 …)

srandmember key

作用: 返回集合 key 中, 随机的 1 个元素.

(和 spop 不同,不会弹出 / 删除 key 中的元素)

sismember key  value

作用: 判断 value 是否在 key 集合中
是返回 1, 否返回 0

smembers key

作用: 返回集中中所有的元素
注意:
smembers 命令不会删除数据。但是如果集合里的数据量极大,就应该慎重使用“获取所有数据,因为这样会导致系统的 I / o 资源瞬间耗尽

scard key

作用: 返回集合中元素的个数

smove source dest value

作用: 把 source 中的 value 删除, 并添加到 dest 集合中

sinter  key1 key2 key3

作用: 求出 key1 key2 key3 三个集合中的交集, 并返回
redis 127.0.0.1:6379 sadd s1 0 2 4 6
(integer) 4
redis 127.0.0.1:6379 sadd s2 1 2 3 4
(integer) 4
redis 127.0.0.1:6379 sadd s3 4 8 9 12
(integer) 4
redis 127.0.0.1:6379 sinter s1 s2 s3
1) 4
redis 127.0.0.1:6379 sinter s3 s1 s2
1) 4

sinterstore dest key1 key2 key3

作用: 求出 key1 key2 key3 三个集合中的交集, 并赋给 dest

suion key1 key2.. Keyn

作用: 求出 key1 key2 keyn 的并集, 并返回

sdiff key1 key2 key3

作用: 求出 key1 与 key2 key3 的差集
即 key1-key2-key3

集合的应用:
在工程中,Redis 的集合一般有两种用途:
(I)根据集合内数据不重复的特性实现去重并记录信息。
(2)利用多个集合计算交集、并集和差集。
假设,要做一个学生选课情况实时监控系统,则需要实时知道以下几个数据:
(I)当前一共有多少学生至少选了一门课。
(2)选了 A 课没有选 B 课的学生有多少。
(3)既选了 A 课又选了 B 课的学生有多少。
(4) A、B 两门课至少选了一门的学生有多少。
使用集合可以轻易实现这样的功能。每一门课作为一个集合,里面的值就是每一个学生的
学号,如图 5 -65 所示:
数据库集合相关命令有哪些
用 python 实现:

import redis
client = redis.Redis(host= xx.xx.xx.xx’)
all_class = [algorithm’,’computer’,’history’,’circuit_design’,’math]
def all_student():
students = client.sunion(*all_class)
return len(students)
def in_a_and_in_b(class_a,class_b):
students = client.sinter(class_a,class_b)
return len(students)
def in_a_not_in_b(class_a,class_b):
students = client.sdiff(class a , class b)
return len(students)
def in_a_or_in_b(class_a,class_b):
students= client.sunion(classa,classb)
return len(students)
def in_a_or_in_b(class_a,class_b):
students = client.sunion(class_a,class_b)
return len(students)
// 选了至少一门课:all_student()
// 选了 math 没选 computer 的:in_a_not_in_b(math , computer)
// 选了 math 也选了 computer 的学生:in_a_and_in_b(math , computer)
// 选了 math 或选了 computer 的学生:in_a_or_in_b(math , computer)

“数据库集合相关命令有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2333字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)