利用位运算实现用户标签记录的原理与实现思路

  用户标签对于软件系统及软件业务很重要,它是构成用户画像的核心因素,是将用户在平台内所产生的行为数据,分析提炼后生成具有差异性特征的形容词。即用户通过平台,在什么时间什么场景下做了什么行为,平台将用户所有行为数据提炼出来形成支撑业务实现的可视化信息。比如直播应用中,可以给一个用户划分为VIP直播常客消费能力强 等等。有了对应的用户标签之后,不同的用户可以划分成不同的用户群体,而不同的用户群体对于运营团队来说,可以根据不同群体发放不同的奖励,或者做一些活动等等,这样对平台的整个营收都会有很大的帮助。
在这里插入图片描述

  那么在系统中如何记录用户标签信息呢?以下列举一些用户标签实现的常用方案:

  1. 利用MongoDB做标签记录:使用JSON格式去做标签记录的存放。需要额外搭建MongoDB集群。
  2. 基于MySQL做标签记录:使用特殊业务字段的方式去存放标签。但有一个缺点就是每次业务增加标签类型的时候,都要增加字段,调整的频率可能会比较高。
  3. 基于MySQL并使用二进制的思路去存储标签信息。这样当业务增加的时候,就不需要对表结构进行调整了

在这里插入图片描述
如:t_user_tag表中预留了三个字段 tag_info_01tag_info_02tag_info_03用来存储标签的十进制数字,十进制数字转换成二进制01串后,每个不同的为就代表不同的用户标签的含义,从而记录每个标签是否被标记。

利用位运算实现用户标签记录实现原理: 假设标签是一个数字16,转换为二进制就是10000

  1. 设置标签: 采用 或运算 | (参与运算的两个位只要有一个为1,其值就为1)
  0 0 0 0 1(用户原先就有记录一个标签)
| 1 0 0 0 0
------------------------------
  1 0 0 0 1(用户记录上标签后,存入数据库)
  1. 取消标签: 采用 与+取反运算 &~ 来实现
   1 1 0 0 1   (用户原先就有记录两个标签)
   1 0 0 0 0  
~  0 1 1 1 1   
&  0 1 1 1 1   (然后用原先的标签1 1 0 0 1 按位与 0 1 1 1 1)
------------------------------
   0 1 0 0 1 (取消了用户的数字为16的那个标签)
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值