当前位置: 首页 > wzjs >正文

专门做美食的网站6网络营销软件站

专门做美食的网站6,网络营销软件站,建设政府网站目标,模板网代码文章目录 前言普通命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码使用场景 前言 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中 1)元…

文章目录

  • 前言
  • 普通命令
    • SADD
    • SMEMBERS
    • SISMEMBER
    • SCARD
    • SPOP
    • SMOVE
    • SREM
  • 集合间操作
    • SINTER
    • SINTERSTORE
    • SUNION
    • SUNIONSTORE
    • SDIFF
    • SDIFFSTORE
  • 命令小结
  • 内部编码
  • 使用场景

前言

集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中
1)元素之间是无序
2)元素不允许重复,如下图所示。一个集合中最多可以存储 2 32 − 1 2^{32} - 1 2321 个元素。
Redis除了支持集合内的增删查改操作,同时还支持多个集合取 交集并集差集

集合类型
在这里插入图片描述


普通命令

SADD

SADD key member [member ...]

将一个或者多个元素添加到 set 中。注意,重复的元素 无法添加 到set中。
时间复杂度:O(1)
返回值:本次添加成功的元素个数。

 redis> SADD myset "Hello"(integer) 1redis> SADD myset "World"(integer) 1redis> SADD myset "World"(integer) 0redis> SMEMBERS myset1) "Hello"2) "World"

SMEMBERS

SMEMBERS key

获取一个set中的 所有元素,注意,元素间的顺序是 无序 的。
时间复杂度:O(N)
返回值:所有元素的列表。

 redis> SADD myset "Hello"(integer) 1redis> SADD myset "World"(integer) 1redis> SMEMBERS myset1) "Hello"2) "World"

SISMEMBER

SISMEMBER key member

判断一个元素在不在set中
时间复杂度:O(1)
返回值:1 表示元素在set中。0 表示元素不在 set 中或者 key 不存在。

 redis> SADD myset "one"(integer) 1redis> SISMEMBER myset "one"(integer) 1redis> SISMEMBER myset "two"(integer) 0

SCARD

SCARD key

获取一个set的基数(cardinality),即set中的 元素个数
时间复杂度:O(1)
返回值:set内的 元素个数

redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SCARD myset
(integer) 2

SPOP

SPOP key [count]

从set中删除并返回一个或者多个元素。注意,由于set内的元素是无序的,所以取出哪个元素实际是未定义行为,即可以看作随机的。
时间复杂度:O(N),n是count
返回值:取出的元素

redis> SADD myset "one"
(integer) 1
redis> SADD myset "two"
(integer) 1
redis> SADD myset "three"
(integer) 1
redis> SPOP myset
"one"
redis> SMEMBERS myset
1) "three"
2) "two"
redis> SADD myset "four"
(integer) 1
redis> SADD myset "five"
(integer) 1
redis> SPOP myset 3
1) "three"
2) "four"
3) "two"
redis> SMEMBERS myset
1) "five"

SMOVE

SMOVE source destination member

将一个元素从 源set 取出并放入 目标set 中。
时间复杂度:O(1)
返回值:1 表示移动成功,0 表示失败

 redis> SADD myset "one"(integer) 1redis> SADD myset "two"(integer) 1redis> SADD myotherset "three"(integer) 1redis> SMOVE myset myotherset "two"(integer) 1redis> SMEMBERS myset1) "one"redis> SMEMBERS myotherset1) "three"2) "two"

SREM

SREM key member [member ...]

将指定的元素从set中删除。
时间复杂度:O(N), N是要删除的元素个数.
返回值:本次操作删除的元素个数

 redis> SADD myset "one"(integer) 1redis> SADD myset "two"(integer) 1redis> SADD myset "three"(integer) 1redis> SREM myset "one"(integer) 1redis> SREM myset "four"(integer) 0redis> SMEMBERS myset1) "three"2) "two"

集合间操作

交集(inter)、并集(union)、差集(diff)的概念如下图所示

集合求交集、并集、差集
在这里插入图片描述


SINTER

SINTER key [key ...]

获取给定set的交集中的元素
时间复杂度:O(N*M), N是最小的集合元素个数.M是最大的集合元素个数
返回值:交集的元素。

 redis> SADD key1 "a"(integer) 1redis> SADD key1 "b"(integer) 1redis> SADD key1 "c"(integer) 1redis> SADD key2 "c"(integer) 1redis> SADD key2 "d"(integer) 1redis> SADD key2 "e"(integer) 1redis> SINTER key1 key21) "c"

SINTERSTORE

SINTERSTORE destination key [key ...]

获取给定set的 交集 中的元素并 保存 到 目标set中
时间复杂度:O(N*M), N是最小的集合元素个数.M是最大的集合元素个数.
返回值:交集的元素个数

 redis> SADD key1 "a"(integer) 1redis> SADD key1 "b"(integer) 1redis> SADD key1 "c"(integer) 1redis> SADD key2 "c"(integer) 1redis> SADD key2 "d"(integer) 1redis> SADD key2 "e"(integer) 1redis> SINTERSTORE key key1 key2(integer) 1redis> SMEMBERS key1) "c"

SUNION

SUNION key [key ...]

获取给定set的 并集 中的元素
时间复杂度:O(N),N给定的所有集合的总的元素个数.
返回值:并集的元素。

 redis> SADD key1 "a"(integer) 1redis> SADD key1 "b"(integer) 1redis> SADD key1 "c"(integer) 1redis> SADD key2 "c"(integer) 1redis> SADD key2 "d"(integer) 1redis> SADD key2 "e"(integer) 1redis> SUNION key1 key21) "a"2) "c"3) "e"4) "b"5) "d"

SUNIONSTORE

SUNIONSTORE destination key [key ...]

获取给定set的 并集 中的元素并保存到 目标set 中
时间复杂度:O(N), N给定的所有集合的总的元素个数.
返回值:并集的元素个数

redis> SADD key1 "a"(integer) 1redis> SADD key1 "b"(integer) 1redis> SADD key1 "c"(integer) 1redis> SADD key2 "c"(integer) 1redis> SADD key2 "d"(integer) 1redis> SADD key2 "e"(integer) 1redis> SUNIONSTORE key key1 key2(integer) 5redis> SMEMBERS key1) "a"2) "c"3) "e"4) "b"5) "d"

SDIFF

SDIFF key [key ...]

获取给定set的差集中的元素
时间复杂度:O(N),N给定的所有集合的总的元素个数
返回值:差集的元素

redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFF key1 key2
1) "a"
2) "b"

SDIFFSTORE

SDIFFSTORE destination key [key ...]

获取给定set的 差集 中的元素并保存到 目标set 中
时间复杂度:O(N),N给定的所有集合的总的元素个数
返回值:差集的元素个数

redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFFSTORE key key1 key2
(integer) 2
redis> SMEMBERS key1) "a"2) "b"

命令小结

在这里插入图片描述


内部编码

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数并且元素的个数小于 set-max-intset-entries 配置(默认512个)时,Redis会选用 intset 来作为集合的内部实现,从而减少内存的使用。
  • hashtable(哈希表):当集合类型无法满足 intset 的条件时,Redis会使用 hashtable 作为集合的内部实现。

(1) 当元素个数较少并且都为整数时,内部编码为intset

127.0.0.1:6379> sadd setkey 1 2 3 4
(integer) 4
127.0.0.1:6379> object encoding setkey
"intset"

(2) 当元素个数超过512个,内部编码为 hashtable

 127.0.0.1:6379> sadd setkey 1 2 3 4(integer) 513127.0.0.1:6379> object encoding setkey"hashtable"

(3) 当存在元素不是整数时,内部编码为 hashtable

127.0.0.1:6379> sadd setkey a
(integer) 1
127.0.0.1:6379> object encoding setkey
"hashtable"

使用场景

集合类型比较典型的使用场景是标签(tag)。
例如A用户对娱乐、体育板块比较感兴趣,B用户对历史、新闻比较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同一个标签的人,以及用户的共同喜好的标签,这些数据对于增强用户体验和用户黏度都非常有帮助。
例如一个电子商务网站会对不同标签的用户做不同的产品推荐

通过集合类型来实现标签的若干功能

(1) 给用户添加标签

sadd user:1:tags tag1 tag2 tag5
sadd user:2:tags tag2 tag3 tag5
...
sadd user:k:tags tag1 tag2 tag4

(2) 给标签添加用户

sadd tag1:users user:1 user:3
sadd tag2:users user:1 user:2 user:3
...
sadd tagk:users user:1 user:4 user:9 user:28

(3) 删除用户下的标签

srem user:1:tags tag1 tag5
...

(4) 删除标签下的用户

srem tag1:users user:1
srem tag5:users user:1
...

(5) 计算用户的共同兴趣标签

sinter user:1:tags user:2:tags

http://www.dtcms.com/wzjs/395381.html

相关文章:

  • 莆田做网站价格郑州网站建设优化
  • 为什么教育网站做的都很烂线下推广有哪些渠道
  • 天元建设集团网站网上推广用什么平台推广最好
  • 手机视频网站建站个人网站设计内容
  • 做北美市场的外贸网站推广产品的软文
  • 临朐网站建设软文营销方案
  • 会展行业门户网站建设网站友链交换平台
  • javaweb做网站的优点济南seo排名搜索
  • 天鸿建设集团有限公司 网站惠州网站排名提升
  • 网站中图片下移怎么做seo顾问服务咨询
  • 中山市建设局安全监督站网站天津seo数据监控
  • 企业网站页脚信息广东seo外包服务
  • dedecms菜谱网站源码软文推广发布
  • 建设银行网上银行网站进入不了网络黄页推广大全
  • 北京金河水务建设有限公司网站企业信息查询
  • 成都网站建设xhbrand网站设计用什么软件
  • 泉州网站开发企业百度移动应用
  • web首页设计源代码南召seo快速排名价格
  • 苏州专业网站制作免费友情链接交换平台
  • iis7 发布asp网站404球队世界排名榜
  • 网站挂百度广告定制型营销网站建设
  • 个人网站网页设计模板发布软文网站
  • 厦门35网站建设公司南昌seo搜索优化
  • 天津市建设委员会网站windows优化大师靠谱吗
  • 个人印章在线制作网站简单制作html静态网页
  • 网站建设与管理资料下载如何做一个网站
  • 视频网页制作教程seo的内容有哪些
  • 网站怎么添加滤镜功能吗站长工具网
  • 牛股大转盘网站建设新产品宣传推广策划方案
  • 孝感市建设网站搜索引擎优化的办法有哪些