redis 学习笔记(五) set数据类型

目录

一.set类型的介绍

二.set类型数据的基本操作

三.set类型数据操作随机数据       

五.set集合 交并差操作       

六.set实现权限校验

七. set实现网站访问量统计  

 

一.set类型的介绍

      新的存储需求:存储大量的数据,在查询方面提供更高的效率

      需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

      set存储空间:(与hash存储机制完全相同,变形而来)

      set类型:与hash存储结构完全相同,仅存储键,不存储值nil,并且键的值不许重复

     

           redis 学习笔记(五) set数据类型

 

二.set类型数据的基本操作

     1.添加数据

           sadd key  member1 [member2]

          redis 学习笔记(五) set数据类型

     2.获取全部数据

          smembers key

         redis 学习笔记(五) set数据类型

         

     3.删除数据

          srem key member1 [memeber2]

        redis 学习笔记(五) set数据类型

   4.获取集合数据总数量

         scard  key

         redis 学习笔记(五) set数据类型

  5.判断集合中是否包含指定数据

        sismember key member

        redis 学习笔记(五) set数据类型

 三.set类型数据操作随机数据

         业务场景

               每位用户首次使用今日头条时会设置3项爱好的内容,但是为了增加用户的活跃度,兴趣点,必须让客户呃对其他信息类型逐渐产生兴趣,增加客户留存度

    如何实现来提高用户粘性?

            

         业务分析:

                          1.系统分析出各个分类的最新或最热点的信息组织成set集合

                          2.随机挑选其中部分数据

                          3.结合用户关注信息中的热点信息组织成要向该用户展示的信息集合

         解决方案: 

                      随机获取集合中指定数量的数据

                      srandmember  key [count]

                      redis 学习笔记(五) set数据类型

                      Spop 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。

                      SPOP key [count]

                      redis 学习笔记(五) set数据类型

              Tips8:

                     redis应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游路线,应用类app推荐,大V推荐等

    

五.set集合 交并差操作

         业务场景

                  脉脉为了促进用户间的交流,保障业务成单率的提升,需要让每位用户拥有大量的好友,事实上职场新人不具有更多的职场好友,

            如何快速让用户积累更多的好友?

                 新浪微博为了增加用户热度,提高用户留存性,需要微博用户在关注更多的人,以此获取更多的信息或热门的话题,如何提高用户关注

            让人的数量?

        

         set集合解决方案

              

                1.求集合的交集,并集,差集

                              sinter    key1  [key2]   交集

                              redis 学习笔记(五) set数据类型 

                              sunion  key1  [key2]   并集

                               redis 学习笔记(五) set数据类型

                              sdiff      key1  [key2]   差集

                               redis 学习笔记(五) set数据类型

                   2.求集合的交,并,差集并存储到指定集合

                            sinterstore   destination  key1 [key2]  

                              redis 学习笔记(五) set数据类型 

                           sunionstore  destination  key1 [key2]

                             redis 学习笔记(五) set数据类型

                           sdiffstore      destination  key1 [key2]

                            redis 学习笔记(五) set数据类型

                 3.将指定数据从原集合中移到目标集合中

                          smove   source destination  member

                                        源集合   目标集合   要转移的成员

                         redis 学习笔记(五) set数据类型

 

               tips9:redis应用于同类信息中的关联搜索,二度关联搜索,深度关联搜索

                    

               显示共同关注(一度)

               显示共同好友(一度)

               由用户A出发,获取到好友B的好友信息列表(一度)

               由用户A出发,获取好友B的购物清单列表(二度)

               由用户A出发,获取好友B的游戏充值列表(二度)

六.set实现权限校验

           1.set类型不允许重复,如果添加的数据在set中已经存在,将只保留一份(第一次添加成功,第二三四次均失败)

           2.set虽然与hash的存储结构相同,但是无法启动hash中储存值的空间

               

                业务场景

                     集团公司里拥有12000名员工,内部oa系统拥有700多个角色,3000多个业务操作,23000多种数据,每位员工具有一个或多个角色,

            如何快速进行业务操作的权限校验?

                  

                     解决方案:

                   1.依赖set集合数据不重复的特征,完成数据快速过滤与查询

                   2.根绝用户id获取用户所有角色

                   3.根据用户所有角色获取用户所有操作权限放入set集合中

                    不鼓励业务混到redis中

 

               tips10:

                         redis应用于同类型不重复数据的合并操作

 

 

七. set实现网站访问量统计

              业务场景:

                                    公司对旗下的网站做推广,统计网站的pv(访问量),uv(独立访客),ip(独立ip)

                                    pv:网站被访问次数,可通过刷新页面提高访问量

                                    uv:网站被不同用户访问的次数,可通过cookie统计访问量,相同的用户切换ip地址,uv不变

                                    ip:网站被不同ip地址访问的总次数,可通过ip地址统计访问量,相同ip,不同用户访问,ip不变

                 

               解决方案:

                                    1.利用set集合的数据去重的特征,记录各种访问数据

                                    2.利用string 类型数据,利用inscr统计日访问量(pv)

                                    3.建立set模型,记录不同的cookie数量(uv)

                                    4.建立set模型,记录不同ip地址数量

                tips11:

                       redis应用于同类型数据的快速去重

          set实现黑白名单

                     业务需求:对用户实现黑白名单的功能

                     解决方案:

                                 1.基于经营战略设定用户发现,鉴别规则

                                  2.周期性满足规则的用户黑名单,加入set集合

                                 3.用户行为信息满足后与黑名单作对比,确定行为取向

                                 4.黑名单过滤ip地址:

                                          应用于开放游客访问设备权限的信息源

                                 5.黑名单过滤设备信息:应用于限定访问设备的信息源

                                 6.黑名单过滤用户:       应用于基于访问权限的信息源