set 集合类型

释义:
    
        redis 的 set 是 string 类型的无序集合

set 元素最大可以包含(2的32次方-1)个元素

关于 set 集合类型除了基本的添加删除操作 其他有用的操作还包含集合的

并集(union),交集(intersection),差集(difference).

通过这些操作实现SNS中的 好友推荐功能

注意:

每个集合中的各个元素不能重复

应用场合:

QQ好友的推荐

set 类型操作:

sadd key member

添加一个 string 元素到 key 对应的 set 集合中 成功返回 1 如果元素在集合中 返回0  若 key 对应的 set 集合不存在 返回错误

srem key member[member]

从 key 对应的 set 中移除给定的元素 成功返回 1

smove p1 p2 member

从 p1 对应 set 中移除 member 并添加到 p2 对应 set 中

scard key

返回 set 中元素的个数

sismember key member

判断 member 是否在 set 中

sinter key1 key2... keyN

返回所有给定 key 的交集

sunion key1 key2... keyN

返回所有给定 key 的并集

sdiff key1 key2... keyN

返回所有给定 key 的差集( 只有 key1 的 没有 key2 的)

smembers key

返回 key 对应 set 的所有元素 结果是无序的

eg:

laowen10 朋友圈                        laowen20 朋友圈
                        公共朋友
    laowen 11                            laowen21
    
    laowen 12             laowen01        laowen22
    
    laowen 13            laowen02        laowen23

// 生成 laowen10 的朋友圈   的 set 集合

sadd laowen10 laowen11    // OK 表示添加OK

sadd laowen10 laowen12    // OK 表示添加OK
    
    sadd laowen10 laowen13    // OK 表示添加OK

sadd laowen10 laowen01    // OK 表示添加OK

sadd laowen10 laowen02    // OK 表示添加OK

// 生成 laowen20 的朋友圈   的 set 集合

sadd laowen20 laowen21    // OK 表示添加OK
    
    sadd laowen20 laowen22    // OK 表示添加OK
    
    sadd laowen20 laowen23    // OK 表示添加OK

sadd laowen20 laowen01    // OK 表示添加OK

sadd laowen20 laowen02    // OK 表示添加OK

// 交集 获取到交集

sinter laowen10 laowen20

// 返回交集结果

// 1) "laowen01"

// 2) "laowen02"

// 并集 获取到并集

sunion laowen10 laowen20

// 返回并集结果

// 1) "laowen11"
        
        // 2) "laowen12"
        
        // 3) "laowen13"
        
        // 4) "laowen21"
        
        // 5) "laowen22"
        
        // 6) "laowen23"
        
        // 7) "laowen01"

// 8) "laowen02"

// 差集 获取到差集

sdiff laowen10 laowen20

// laowen10 与 laowen20 比较 返回只属于 laowen10 的集合

// 1) "laowen11"
        
        // 2) "laowen12"
        
        // 3) "laowen13"

sdiff laowen20 laowen10

// laowen20 与 laowen10 比较 返回只属于 laowen20 的集合

// 1) "laowen21"
        
        // 2) "laowen22"
        
        // 3) "laowen23"

// 获取给定元素的集合

smembers laowen10

// 获取到 laowen10 的 set 集合

// 1) "laowen11"
        
        // 2) "laowen12"
        
        // 3) "laowen13"
        
        // 4) "laowen01"
        
        // 5) "laowen02"

// 判断是否存在在对应的集合中

sismember laowen10 laowen11

// (integer) 1  // 说明 laowen11 在 laowen10 的 set 集合中
    
    sismember laowen10 laowen21

// (integer) 0  // 说明 laowen21 不在 laowen10 的 set 集合中
    
    // 获取到 key 对应的 set 集合中的元素的个数

scard laowen10

// (integer) 5  // 说明 有5个元素

// 移动元素

smove laowen10 laowen20 laowen11

// (integer) 1  // 将 laowen10 集合里面的元素 laowen11 移动到 laowen20 集合下

// 删除元素

srem laowen20 laowen11

// (integer) 1  // 将 laowen20 集合里面的元素 laowen11 删除

redis 的使用 ( set集合类型操作)的更多相关文章

  1. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

  2. redis 的使用 (sort set排序集合类型操作)

    sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子( ...

  3. redis:order set有序集合类型的操作(有序集合)

    1. order set有序集合类型的操作(有序集合) 有序集合是在无序集合的基础上加了一个排序的依据,这个排序依据叫score,因此声明一个集合为有序集合的时候要加上score(作为排序的依据) 1 ...

  4. Redis中7种集合类型应用场景

    StringsStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...

  5. Redis中7种集合类型应用场景&redis常用命令

    Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...

  6. 6.Set集合类型操作使用

    Set集合类型 (1)介绍 redis的set是string类型的无序集合set元素最大可以包含(2的32次方-1)个元素关于set集合类型除了基本的添加删除操作,其它有用的操作还包含集合的取并集(u ...

  7. redis 的使用 ( list列表类型操作)

    list 数据类型 列表类型 list 类型是一个双向操作 从链表的头部或者尾部添加删除元素 list 既可以用作栈 也可以用作队列 list 链表的类型应用场合: 获取最新的 10 个用户的信息 s ...

  8. 7.SortSet排序集合类型操作

    Sort Set排序集合类型 (1)介绍 和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个权.通过权值可以有序的获取集合中的元素 该Sort Set类型适合 ...

  9. Redis命令拾遗四——集合类型(命令补充)

    补充下上篇文章集合的命令. 上篇地址 博客园蜗牛 http://www.cnblogs.com/tdws/p/5785939.html SCARD Key获得执行集合中元素的数量. SDIFFSTOR ...

随机推荐

  1. 【QT】视频播放

    在网上没找到,在书上也没有.后来突然想直接在官网的类里面找Video 居然就有了. 把http://qt-project.org/doc/qt-5/qmediaplayer.html的例子补充完整后就 ...

  2. LeetCode 217 Contains Duplicate

    Problem: Given an array of integers, find if the array contains any duplicates. Your function should ...

  3. jquery $(document).ready() 与window.onload的异同

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的.   1.执行时间     ...

  4. Linux 添加新硬盘 LVM操作(作用:新增硬盘的卷管理)

    1 查看当前系统硬盘及分区情况 (注:linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2 初始化分区sdb为物理卷pv pvcreate /dev/sdb  / ...

  5. MyBatis之多表关联查询

    1使用resultType.ResultMap处理返回结果 处理返回结果 resultType:指定返回值结果的完全限定名,处理多表查询的结果. 多表查询需要定义vo封装查询的结果. 需求:查询部门和 ...

  6. app上传到app Store常见问题

    一.首先看一下提交界面出现的问题(能成功打包成.ipa) 产生问题的原因如下:由于工程中含有sub project,而sub project中有private或public的文件导致的.这样的应用往往 ...

  7. 面向对象的小demo

    两个类如下 package cao.com.duixiang; import java.util.Arrays; public class OtherTest { //求max public int ...

  8. bootstrap垂直下拉菜单默认展开

    HTML: <div class="col-md-3"> <nav class="navbar"> <div class=&quo ...

  9. [转]c++ vector 遍历方式

    挺有趣的,转来记录 随着C++11标准的出现,C++标准添加了许多有用的特性,C++代码的写法也有比较多的变化.   vector是经常要使用到的std组件,对于vector的遍历,本文罗列了若干种写 ...

  10. #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决

    使用mac的朋友可能都有这样的疑问,mac系统下强大的文本编辑器居然不能保存常用的TXT格式? 又或者打开同事在windows上保存的TXT文件会出现如下情况: 最近Hans也被这些问题困扰着,于是便 ...