初探Redis-基础类型Set

目录

Redis存在五种基础类型:字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。本次列举出Set的常用操作。

Redis官网:https://redis.io/ 

 

集合(Set)介绍 

Redis 中的集合是一个字符串类型的无序集合,即集合中不存在重复的元素。集合中最大的元素个数为 2^32 -1 个,集合内部的操作是基于哈希表实现的,一次添加、查找、删除操作的时间复杂度都为 O(1)。

161645306_c383dbff-9056-4292-ae11-0bd234cf1886  

集合(Set)相关操作Api

添加值

161646618_f96c9d35-8bc5-444e-a9f4-408e77c53366 161647872_ad89db65-270f-428a-9ccb-967ab2f4e886  

删除值

161649069_533c4c47-e185-41fc-be7d-4880c18980a1 161650273_fa885889-0cfb-4c20-8d7d-b221bb567f50

查看集合内所有值

161651497_41947ba6-ea81-4e7e-8bc4-a99c0cc0e35d 161652634_b3f77b8a-8329-4572-a522-4d637d15263f

查看集合中是否有给定值

161653816_c18140c9-32b1-4f88-ac52-32a711504ff3

161655053_39bf013d-a792-4794-81b9-576a48a93955

计算集合中值总量

161656502_c385bfbe-b816-4d50-ac67-dff350ce2a80 161657658_1225ed97-6b95-4e7d-9eb3-17cd2c900f01

集合中随机获取n个数据

161658829_5d0a9add-312a-4f17-a910-792f30856d95 161659942_840b39c7-d906-48c7-8600-c96ea872558f

集合中随机移除n个值并返回

161701047_99d313fd-f925-49b4-8efe-593cc8d3ac07 

161702520_5c137001-85af-4a37-8067-a35b80a2532c

迭代获取集合中匹配的数据 161703804_4beea89a-6727-4f73-8d15-7d2c760ff48b

161705652_f9ac9c23-6e34-4783-b239-1e3ebf6ae7a5

 

集合(Set)间相关操作Api

获取多集合交集结果 161707106_4545ff3c-f41b-4952-bd75-1c187cff96f3

161708193_126fc31e-92a2-4e23-9b1b-331420dc5439

获取多集合交集结果并存在新集合中 161709387_af376fae-0dfa-4299-bf48-b11943cf9459

161710493_8f14d8c2-5390-4384-a601-43f75c2c4fd3

获取多集合差集结果 161711785_c8ec0ce7-9455-4758-8625-7cca2d9fe490

161713018_45b300b6-4ba9-49c2-821c-65709471dd51 

161714314_6eaff2fa-4ed6-4709-80f3-7d7dd5fb9686

获取多集合差集结果并存在新集合中 161715479_19d9afb0-2047-4496-b25e-36a8c30df41f

161716576_8bc59e2f-d547-43c2-bce6-91cedf875d20

获取多集合并集结果 161717761_7bdc40b9-0646-4ebc-995b-8086cab46522

161718885_77a71b4b-d255-47f2-9085-47e6922755f8 

获取多集合并集结果并存在新集合中 161720011_21687d63-fd4d-4c83-bfa5-a5a7b006ce6a

161721108_59277fb0-986b-407d-b3ba-191f9a9534f6

集合内数据移动到新集合中 161722311_35680c8e-2d8a-4803-b678-071ab6e09058

161723574_dd86ce45-2fdc-4d91-a07b-42ebe2a7c44d  

集合(Set)简单应用场景

简单模拟抽奖场景,利用Set中随机获取集合中一个值来完成抽奖场景,具体场景为,年会活动,用户扫码加入抽奖活动,每个用户有独自的id,抽奖项为一等奖,抽中者不能再参与抽奖活动。

  1. 初始用户id
service.SetAdd("FirstPrize", "userId1");
service.SetAdd("FirstPrize", "userId2");
service.SetAdd("FirstPrize", "userId3");
service.SetAdd("FirstPrize", "userId4");
service.SetAdd("FirstPrize", "userId5");
service.SetAdd("FirstPrize", "userId6");
  1. 完成一轮抽奖活动,随机从参与集合中获取一个用户id。
service.SetPop<string>("FirstPrize");
  1. 效果展示一下,每轮获取一个数据,并从原有集合中删除,保证了下一次抽奖活动不会再抽中原有获奖者。

161724947_a64e4479-032e-4348-92aa-5a7c6161ffbe

  

仓库地址:https://gitee.com/530521314/Partner.TreasureChest/tree/master/RedisOperate

2020-06-14,望技术有成后能回来看见自己的脚步