Redis学习(五)数据存储类型——set

已有List、Hash存储类型为何还要引入Set存储类型?

  1. list的底层是链表结构,链表是加快的是存储速度,但是链表本身不带有下标,当查询下标进行遍历时会有速度瓶颈
  2. 需要存储大量的数据,且只需要存储键,不存储值,键是唯一的

Set的用途

  1. 应用于同类型信息的关联搜索
  2. 统计网站的访问量PV、UV

 

List、Hash与Set的区别

List的结构

Hash的结构

Set的结构

 

 

Set类型的基本操作

新增

sadd key member1 member2 ...            

获取全部数据

smembers key

删除

srem key member1 ...

获取集合数据总量(size)

scard key

判断集合中是否包含数据(contains)

sismember key member            // 包含为1,不包含为0

随机获取集合中count个数据

srandmember key count

随机获取集合中count个数据并移除

spop key count

 

扩展操作

两个set的交集、并集、差集

sinter key1 key2            // 交集
sunion key1 key2            // 并集
sdiff key1 key2             // 差集

查找两个set的交集、并集、差集,并把结果放到指定set中

sinterstore destination key1 key2            // 求交集并放在destination中
sunionstore destination key1 key2            // 求并集并放在destination中
sdiffstore destination key1 key2             // 求差集并放在destination中

将集合中的指定数据移动到另一个集合中

smove source destination member 

 

应用场景

记录网站访问量

  • UV(页面浏览量或点击量,重复刷新页面也会记录)

用string存储模型

  • PV(网站被注册的不同用户访问次数,一般使用cookie)

使用set存储模型

  • IP(网站被不同ip访问的次数)

使用set存储模型

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值