用户画像系列——布隆过滤器在策略引擎中的应用

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 用户画像系列——布隆过滤器在策略引擎中的应用

用户画像系列——当我们聊用户画像,我们在聊什么?

介绍了用户画像的应用场景:

(1)个性化推荐

通过用户标签给用户推荐合适的商品或者内容

(2)营销圈选

参考:用户画像系列——Lookalike在营销圈选扩量中的应用

(3)策略引擎

根据用户标签命中不同的策略,比如说:高消费人员有奢侈品入口通道

(4)算法模型

(5)画像报告

背景:

这篇文章分享的是用户画像在策略引擎中的应用。首先来了解下策略引擎是干什么的?

比如:当某个用户第一次进入某个平台,会给你弹窗有什么优惠,新用户优惠券等等;或者某个用户消费金额极高,达到一个阈值,认为该用户有极大的消费能力,可以开放奢侈品入口,即:淘宝上的奢侈品频道是根据之前有消费过奢侈品、且高价值的用户才开放的。

上述是一个简单的策略引擎,通过进行判断当前进入的用户是否满足某个或者多个条件然后进行相应的营销策略

问题和思路:

当引擎策略(或者称之为规则)过于复杂,同时还会经常对规则进行变更,那么是否有一个更加简单的方法来处理呢?即是这篇文章要要分享的通过人群圈选功能,圈出目标用户,定义为人群包,然后当前用户进行平台判断该用户是否在这个人群包里面,因为是线上服务,要求进行用户去查询人群包匹配是否存在的过程需要在毫秒内返回结果

通过上述方案,只需要修改圈选条件,就能够非常简单的解决,策略条件过于复杂以及经常调整的问题。

线上实际应用以及遇到的问题:

因为要求线上用户访问去人群包进行匹配的过程,需要在毫秒级进行返回,因此需要对于人群包数据进行存储,考虑采用redis 进行存储。

redis数据结构如下:

key:人群包id key_1,value:圈选出来的用户列表[userId_1,userId_2,userId_3等等]

SADD key_1 userId_1 userId_2 userId_3 //添加用户id到人群包key_1中
SISMEMBER key_id userId_3 //判断userId_3在不在人群包key_1中

但是随着人群包越来越多,需要的存储也越来越多,通常一个人群包里面的用户少则几万多则上千万甚至亿级。

优化方案:

通过使用redis 的布隆过滤器

bf.madd key_1 userId_1 userId_2 userId_3 //添加用户到人群包中
bf.exists key_1 userId_3 //判断用户是否在人群包中

由于布隆过滤器存储空间小,并且节省空间,不存储数据本身,仅存储hash结果取模运算后的位标记,整理存储优化极大相对于散列表

布隆过滤器详细原理参考:

Redis-布隆过滤器(Bloom Filter)详解

相关文章
|
存储 SQL 分布式计算
用户画像系列—如何从0到1建设用户画像
用户画像系列—如何从0到1建设用户画像
346 0
|
SQL JSON 关系型数据库
DataX 实现 MySQL 数据,高效同步(二)
DataX 实现 MySQL 数据,高效同步(二)
DataX 实现 MySQL 数据,高效同步(二)
|
8月前
|
监控 关系型数据库 MySQL
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
1156 0
|
存储 关系型数据库 MySQL
|
算法 Oracle Java
一文详解|从JDK8飞升到JDK17,再到未来的JDK21
本文深入浅出地解析了从JDK8到JDK17版本升级的新特性,并展望后续将会更新的JDK21.
11210 8
|
存储 缓存 分布式计算
Spring-retry 使用指南
该项目为Spring应用程序提供声明式重试支持,它用于Spring Batch、Spring Integration、Apache Hadoop的Spring(以及其他),命令式重试也支持显式使用。
2203 0
Spring-retry 使用指南
|
JSON API 数据格式
python的request库如何拿到json的返回值
python的request库如何拿到json的返回值
938 0
|
监控 Dubbo 测试技术
如何做好一次服务接口压测?
如何做好一次服务接口压测?
246 0
|
机器学习/深度学习 安全 搜索推荐
如何提升项目交付中软件复用水平
软件复用是软件工程领域一个非常重要的话题,但如何进行有效合理的服用,需要理解复用的本质,并且经过一些顶层设计。本文介绍了不同的软件复用形式,以及各自的优缺点,论述在项目交付场景下合理的复用形式。
29590 20
如何提升项目交付中软件复用水平