Redis系列学习笔记5 集合

集合

存储多个各不相同的元素

Redis的集合以无序的方式存储多个各不相同的元素。用户可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合进行集合运算操作,比如计算并集、交集和差集。

SADD key element [element …]

将一个或多个元素添加到给定的集合里面,已经存在于集合的元素会自动忽略,命令返回新添加到集合的元素数量。

SREM key element [element …]

移除集合中的一个或者多个元素,不存在于集合的元素会自动被忽略,命令返回存在并且被移除的元素数量。

SISMEMBER key element

检查给定的元素是否存在于集合,存在的话返回1;如果元素不存在,或者给定的键不存在,那么返回0.

SCARD key

返回集合包含的元素数量(也即是集合的基数)

SMEMBERS key

返回集合包含的所有元素。当集合的元素数量比较大时,执行该命令有可能会造成服务器阻塞。

投票示例

API说明操作
Vote(key, client)将投票结果记录到给定的键使用集合来储存所有已投票的人
Vote.cast(user)用户进行投票。使用SADD将用户添加到集合里面。
Vote.undo(user)取消用户的投票。使用SREM将用户从集合中移除。
Vote.is_voted(user)检查用户是否已投票。使用SISMEMBER检查用户是否存在于集合。
Vote.voted_members()返回所有已投票用户。调用SMEMBERS。
Vote.voted_count()返回已投票用户的数量。调用SCARD。

添加标签示例

API说明操作
Tag(key, client)使用指定的键来储存某种东西的标签。使用集合来储存标签。
Tag.add(*tags)添加任意多个标签。调用SADD命令。
Tag.remove(*tags)移除任意多个标签调用SREM命令
Tag.is_include(tag)检查某个标签是否存在。调用SISMEMBER命令
Tag.get_all()返回所有标签。调用SMEMBERS命令。
Tag.count()返回标签的数量。调用SCARD命令。

SPOP key

随机地从集合中移除并返回一个元素

SRANDMEMBER key [count]

如果没有给定可选的count参数,那么命令随机地返回集合中的一个元素。

如果给定了count参数,那么:

  • 当count为正数,并且少于集合基数时,命令返回一个包含count个元素的数组,数组中的每个元素各不相同。如果count大于或等于集合基数,那么命令返回整个集合。
  • 当count为负数时,命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值。

微博转发抽奖功能

API说明操作
Loterry(key, client)使用指定的键来储存参与抽奖的人。使用集合来储存参与抽奖的人。
Loterry.add_player(*user)添加参与者调用SADD命令
Loterry.get_all_players()返回所有参与者调用SMEMBERS命令。
Loterry.player_count()返回参与者数量调用SCARD命令
Loterry.draw(n)抽出n个获奖者。调用SRANDMEMBER命令。

集合运算操作

SDIFF key [key …]

计算所有给定集合的差集,并返回结果。

SDIFFSTORE destkey key [key …]

计算所有给定集合的差集,并将结果储存到destkey。

SINTER key [key …]

计算所有给定集合的交集,并返回结果。

SINTERSTORE destkey key [key …]

计算所有给定集合的交集,并将结果储存到destkey。

SUNION key [key …]

计算所有给定集合的交并集,并返回结果。

SUNIONSTORE destkey key [key …]

计算所有给定集合的并集,并将结果储存到destkey。

商品筛选

API说明操作
ItemFilter(client)指定客户端。
ItemFilter.add_option(item_set)添加一个筛选条件选项,item_set集合储存了所有符合该选项的商品。把item_set添加到一个Python集合里面,等待进行筛选
ItemFilter.result()根据目前已给定的选项进行筛选,并返回符合条件的商品。使用SINTER,对所有已给定选项的集合进行计算。
ItemFilter.store_result(key)根据目前已给定的选项进行筛选,并把筛选结果储存到给定的键里面。使用SINTERSTORE,计算并存储交集结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值