zoukankan      html  css  js  c++  java
  • redis 的使用 ( set集合类型操作)

    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 删除

  • 相关阅读:
    如何使用Doxygen生成keil工程的代码文档 (how to use doxygen properly with keil)
    使用matlab画相交的平面
    转载:关于循环异步操作 Promise 实现,ES7 的 await 和 async
    小众软件:相见恨晚的 Windows 系统下的 cmd 的命令行替代者 Cmder(完美神器)
    Windows系统环境下Python脚本实现全局“划词复制”功能
    Ubuntu shell 命令行路径缩短
    shell查找数组是否有特定的值
    保存数据到文件
    左值与右值
    进程与线程的区别
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/5444684.html
Copyright © 2011-2022 走看看