自学内容网 自学内容网

Redis之set类型

目录

一.介绍SET类型

二.SET命令

三.内部编码

四.应用场景


Redis的学习专栏:http://t.csdnimg.cn/a8cvV

一.介绍SET类型

        set类型和list都是集合,不过却有很大的区别,所谓的List是有序的,而set却是无序的。所谓的有序,就是插入顺序,而不是从小到大自动排序。

例子:List:[ 1, 2, 3]  和 [2, 1, 3]   代表不同的集合

           SET:[1,2,3]  和 [2,1,3]  表示同一个集合

SET集合中元素不能重复

二.SET命令

集合的元素,代表 member 

SADD命令

        往集合当中添加元素,返回添加成功的元素个数。

语法: SADD key  member [member,member,...]

SMEMBERS命令

        展示集合当中元素

语法 :SMEMBERS key

SISMEMBER命令

        判断一个元素在不在set当中

语法:SISMEMBER  key member

SPOP命令

        一般表示从末尾删除元素,但由于set集合是无序的,此处是随机删除COUNT 个元素。

语法:pop key [count]

SRANDMEMBER命令

        随机获取集合当中的count个元素。

语法:srandmember key [count]

SMOVE 命令

        将一个元素从源set(source)取出,并且放入目标的set集合(destination)

语法:SMOVE SOURCE DESTINATION MEMBER

SREM 命令

        将集合set删除元素,一次删除多个个member

语法:srem key member [member ...]

集合之间的操作:交、并、差集

交集命令:SINTER key [key,key,...]     或者   SINTERSTORE  DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。

并集命令:SUNION key [key ,...]    或者 SUNIONSTORE DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。

差集命令:SDIFF key [key ,...]    或者 SDIFFSTORE DESTINATION  key [key,key,...]    把结果放在DESTINATION当中。

三.内部编码

        对于 SET 类型(无序集合),Redis 使用了多种不同的内部编码方式,具体取决于存储的数据量和元素类型。以下是 Redis 中 SET 类型可能的内部编码方式:

  1. intset:

    • 当一个 SET 只包含整数值,并且元素个数不超过配置的限制(默认512个元素),Redis 就会使用 intset(整数集合)作为内部编码方式。intset 是一种紧凑的数据结构,用于存储整数值,通过压缩存储节省内存。
  2. hashtable:

    • 当一个 SET 包含的元素个数超过 intset 所能存储的限制,或者 SET 包含的元素不是整数值时,Redis 就会使用 hashtable(哈希表)作为内部编码方式。哈希表允许存储各种类型的元素,并且支持动态扩容,适合存储大量元素和非整数类型的数据。

四.应用场景

1.个人标签

        使用SET保存用户的标签,例如分析你的个人特征,再根据你的标签,推荐你需要的东西!

2.得出共同好友

        使用集合求交集的方式。


原文地址:https://blog.csdn.net/m0_74097410/article/details/140370488

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!