Redis系列(五)、数据类型之无序集合Set

目录

介绍

命令行模式

交集

并集

差集

应用场景


Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

Redis系列(二)、数据类型之字符串String 

Redis系列(三)、数据类型之哈希Hash

Redis系列(四)、数据类型之列表List

------------------------Redis无序集合类型----------------------

介绍

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令行模式

进入命令行模式:

redis-cli -a password_value
 
redis-cli -a password_value --raw
--raw 避免中文显示乱码

help

使用下面的命令查看手册:

help @set

Redis系列(五)、数据类型之无序集合Set_第1张图片

 

sadd

给集合内新增成员,若集合不存在则创建集合并新增成员:

SADD key member [member ...]

Redis系列(五)、数据类型之无序集合Set_第2张图片

srem

从集合中删除指定的成员,返回删除的个数:

SREM key member [member ...]

Redis系列(五)、数据类型之无序集合Set_第3张图片

smove

SMOVE source destination member

Redis系列(五)、数据类型之无序集合Set_第4张图片

 

smembers

查看集合中所有的成员: 

SMEMBERS key

 Redis系列(五)、数据类型之无序集合Set_第5张图片

scard

返回集合中成员的个数 :

SCARD key

Redis系列(五)、数据类型之无序集合Set_第6张图片

srandmember

 从集合中随机返回指定个数的成员:

SRANDMEMBER key [count]

Redis系列(五)、数据类型之无序集合Set_第7张图片

sismember

判断对象是否是集合中的成员,返回1/0,True/False: 

SISMEMBER key member

 Redis系列(五)、数据类型之无序集合Set_第8张图片

spop

从集合中随机弹出一个成员,返回该成员并从集合中删除该成员: 

SPOP key

Redis系列(五)、数据类型之无序集合Set_第9张图片

交集

sinter

取多个集合的交集,返回这些集合中共同拥有的成员:

SINTER key [key ...]

Redis系列(五)、数据类型之无序集合Set_第10张图片

sinterstore

将多个集合的交集的结果保存为一个新的集合destination  ,返回新集合的成员个数: 

SINTERSTORE destination key [key ...]

 

并集

sunion

取多个集合的并集,相同的成员会被去重:

SUNION key [key ...]

 Redis系列(五)、数据类型之无序集合Set_第11张图片

sunionstore

将多个集合的并集的结果保存为一个新的集合destination ,返回新集合的成员个数: 

SUNIONSTORE destination key [key ...]

 Redis系列(五)、数据类型之无序集合Set_第12张图片

差集

sdiff

 取多个集合的差集,以最左边的为主集合,返回左集合中有而其他集合没有的成员:

SDIFF key [key ...]

Redis系列(五)、数据类型之无序集合Set_第13张图片

sdiffstore

将多个集合的差集的结果保存为一个新的集合destination ,返回新集合的成员个数 : 

SDIFFSTORE destination key [key ...]

 

 

应用场景

  1. 抽奖:随机返回指定个数成员
  2. 共同好友:取交集
  3. 好友推荐:根据标签取交集,交集的成员个数大于某个阈值触发推荐动作

 

Python客户端与命令行函数基本上完全一致,篇幅太长因此不再过多的展示。

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

 

你可能感兴趣的:(Python全栈开发,#,Redis)