关灯
护眼 字体:大
中
小
上一章
章节列表
下一页
集合(Sets)是Redis的基本数据结构之一。
Redis中的集合与列表一样可以存放很多数据,但不同之处在于:集合里面的数据不能重复,也没有顺序。由于没有顺序,所以自然没有方向,不存在“左右侧”之说。
Redis的集合与Python的集合有非常多的相似之处,可以对比学习。集合有15条操作命令,本节将介绍其中常用的9条命令。
5.4.1 使用redis-cli实现
1.插入数据
集合的首字母为“S”,“添加”的英文为“Add”,所以向集合中添加数据的命令为“sadd”,命令格式如下:
sadd key value1 value2 value3
key 的命名方式与字符串和列表一样,可以使用数字、字母、下划线和中文,但不建议使用中文。
Value可以有一个或者多个。如果有多个Value,则每一个之间使用空格隔开;如果一个Value内部本身就有空格,则使用引号把它包起来。
以下为使用示例:
命令执行效果如图5-44所示。
图5-44 向Redis的集合中添加数据
向Redis集合中添加数据的过程如图5-45所示。
图5-45 集合插入数据示意图
从图5-45可以看出,由于集合里面的数据是没有顺序的,所以:
● 数据插入命令执行的先后顺序无关紧要。
● 在一条命令中,数据位于“value1”还是“value3”也无关紧要。
由于集合的数据是不重复的,如果在一条命令中同一个数据既是“value1”又是“value2”会怎么样?如果多条命令都插入了同一个数据又会怎么样?下面通过实际执行命令来看效果。
sadd example_set python golang python C Java
sadd example_set python
运行效果如图5-46所示。
图5-46 往集合中插入重复数据
从图5-46可以看出,第一次尝试插入“python”“golang”“python”“C”“Java”一共5个值,但实际上,Redis返回的数字“4”表示实际上只插入了4个值。这是因为有两个“python”,集合自动过滤了第2个“python”。
接下来单独插入一个值“python”,Redis 返回0,表示实际上什么数据都没有添加进“example_set”这个集合中。因为原来已经有“python”这个值了,所以,集合不再接收重复的数据。
2.读取数据
集合里面的数据虽然没有顺序也不能重复,但是可以查看集合里面一共有多少个数据。
(1)查询集合里面元素的数量。
查询集合数据量的命令是scard。其中,首字母“s”是“集合(Sets)”的首字母,“card”不是英文单词“卡片(Card)”,而是“基数(Cardinality)”的缩写。
命令格式如下:
scard key
例如执行以下命令:
scard example_set
执行效果如图5-47所示,表示集合“example_set”中有11条数据。
图5-47 查看集合内部有多少数据
(2)从集合中获取数据。
从集合中获取数据使用的命令为“spop”。由于集合里面的数据没有顺序,所以spop命令会随机获取集合中的数据,无法预测会获取哪一条数据。
“spop”命令的格式如下:
spop key count
其中,如果“count”省略,则表示随机获取1条数据。
● 如果“count”为其他大于1的整数,则会获取多条数据;
● 如果“count”对应的整数超过了集合总数据的条数,则获取集合中的所有数据,例如:
spop example_set
spop example_set 3
spop example_set 1000
运行效果如图5-48所示。获取一条数据后,这一条数据就被会被从集合中删除。
图5-48 从集合中弹出数据
(3)获取集合中的所有数据。
如果要获取所有数据,则可以使用以下命令:
smembers key
运行效果如图5-49所示。
图5-49 获取集合的所有数据
提示:
smembers命令不会删除数据。但是如果集合里的数据量极大,就应该慎重使用“获取所有数据”,因为这样会导致系统的I/O资源瞬间被耗尽。
(4)判断集合中是否包含某个元素。
sadd命令在遇到数据已经存在时,会返回“0”,如果数据不存则把数据插入再返回“1”。所以,这一条命令可以通过返回的数字来判断数据是否存在。
如果不想把数据插入集合,只是单纯想检查数据是否在集合中,那就要使用“sismember”命令。“sismember”命令的使用格式如下:
sismember key value
如果数据存在,则返回“1”;如果数据不存在,则返回“0”。例如:
sismember example_set 2
sismember example_set xxxx
运行效果如图5-50所示,如果看到“2”则表示数据是已经存在的,而如果看到“xxxx”则表示数据是不存在的。
图5-50 检查数据是否在集合中
3.删除数据
如果要从集合中删除特定的数据,可以使用命令“srem”,格式为:
srem key value1 value2 value3
例如:
srem exampl
m.qiduwx.com提示您,本章没有阅读完,点击下一页进入下一页阅读!
上一章
章节列表
下一页