视频

了解更多信息
在当今的数字经济中,A/B 测试已成为营销人员和网站所有者竞争的不可或缺的资产。它允许用户测试现有想法,尝试新想法,并突出显示哪些有效,哪些无效。
如果没有这些信息,尝试优化网页可能会变成一个令人沮丧且耗时的过程。但不幸的是,A/B 测试软件可能很昂贵,阻止了许多人获得其益处。
但借助 Redis,程序员 Thiago Camargo 能够通过创建可在实时运行的开放式 A/B 测试工具来消除这些障碍。Redis 的强大数据处理功能允许用户尝试他们选择的变量,并发现优化网页的最有效方法。
让我们看看 Thiago 是如何将此应用程序组合在一起的。但在我们继续之前,我们想指出,我们在 Redis Launchpad 上有很多创新的应用程序供您发现。
所以请确保在阅读完这篇文章后浏览一下!
您将构建一个功能强大且简单的 A/B 测试工具,该工具可扩展且可在实时运行。下面我们将向您展示如何从头开始构建此应用程序,重点介绍所需组件及其功能。
A/B 测试也称为拆分测试,指的是一种系统性的实验过程,将两个或多个版本的变量显示给网站访问者,以确定哪一个对转化率的影响更大。
它的设计目的是让您更清楚地了解如何在市场上更有效地定位您的品牌、产品和服务。
例如,假设您在网站上有一个想要销售的产品。您可以尝试的变量之一是产品旁边的号召性用语 (CTA) 按钮。您可以通过多种方式对 CTA 进行 A/B 测试,包括
通过拆分测试这些变量,您将发现哪个版本的 CTA 最适合推动转化率。
$ git clone https://github.com/redis-developer/banda
$ gradle task
$ gradle wrapper
$ ./gradlew clean build
如果您使用的是 Docker 桌面,请确保为卷挂载启用了文件共享选项。使用以下代码设置 Redis
docker run \
-p 6379:6379 \
-v /home/user/redis_data:/data \
-it \
redislabs/redismod \
--loadmodule /usr/lib/redis/modules/rejson.so \
--loadmodule /usr/lib/redis/modules/redistimeseries.so \
--loadmodule /usr/lib/redis/modules/redisgraph.so \
--dir /data
使用以下代码启动 Docker
docker run -p 8080:8080 -e BASE_URL -e PORT -e REDIS_URL com.xmppjingle/bjomeliga-docker-boot -ti
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
2021-10-03 13:19:15.856 INFO 1 --- [ main] c.x.bjomeliga.BjomeligaApplicationKt : Starting BjomeligaApplicationKt on b9002f934d84 with PID 1 (/bjomeliga-0.0.1-SNAPSHOT.jar started by root in /)
2021-10-03 13:19:15.863 INFO 1 --- [ main] c.x.bjomeliga.BjomeligaApplicationKt : No active profile set, falling back to default profiles: default
2021-10-03 13:19:18.253 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
在这里,我们将向您展示如何使用基于触发的加权入组创建可扩展的 A/B 测试实验。
在此步骤中,我们将向您展示如何创建允许您对不同变量进行 A/B 测试的实验。我们将设身处地地站在营销人员的角度,他们希望对不同的屏幕颜色进行拆分测试,以查看它们对销售额的影响。
要开始,请使用以下代码。
curl --location --request POST 'localhost:8080/experiment' \
--header 'Content-Type: application/json' \
--data-raw '{
"goalIds": [
"purchase"
],
"id": "subscription1",
"triggerEventId": "user-plan-screen-view",
"variants": {
"variants": [
{
"id": "red",
"params": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"weight": 20
},
{
"id": "blue",
"params": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"weight": 80
}
]
}
}'
值得注意的是,我们将顶部的“goalIds”更改为“purchase”,以衡量从每个屏幕颜色获得的销售额数量。在下方,我们将实验的“id”设为“subscription1”。
为了确定触发事件,我们插入了“user-plan-screen-view”。这意味着,当触发事件时,用户将自动加入实验。
接下来,我们确定了“red”和“blue”作为变体,因为它们是我们将进行 A/B 测试的两个变量。
curl --location --request GET 'localhost:8080/experiment/subscription1'
响应。
{{
"id": "subscription1",
"variants": {
"variants": [
{
"id": "red",
"weight": 20,
"params": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
{
"id": "blue",
"weight": 80,
"params": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
]
},
"triggerEventId": "user-plan-screen-view",
"goalIds": [
"purchase"
]
}
在这里,我们将向您展示如何创建动态且可扩展的远程客户端配置服务(Firebase 替代方案)。
curl --location --request POST 'localhost:8080/config' \
--header 'Content-Type: application/json' \
--data-raw '{
"params": {
"additionalProp1": "red",
"additionalProp2": "green",
"additionalProp3": "blue"
},
"userId": "pixel"
}'
curl --location --request GET 'localhost:8080/config/pixel'
响应
{
"userId": "pixel",
"params": {
"additionalProp1": "red",
"additionalProp2": "green",
"additionalProp3": "blue"
}
}
此步骤涉及时间序列事件索引。
curl --location --request POST 'localhost:8080/events' \
--header 'Content-Type: application/json' \
--data-raw '{
"category": "generic",
"emitterId": "rickAstley",
"id": "Rickrolling",
"labels": {
"channel": "youtube",
"prankedBy": "steveTyler"
},
"retention": 900000,
"type": "prank",
"value": 100
}'
这是一项简单灵活的汇总服务,能够保留和维护多种类型的应用程序的汇总信息。这些包括:游戏记分牌、产品评级、用户评级、增量指标等等。
curl --location --request POST 'localhost:8080/summary' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "abc",
"transactionId": "3rd",
"metrics": [
{
"id": "abc",
"value": 2
},
{
"id": "bcd",
"value": 4
},
{
"id": "fff",
"value": 1
}
]
}'
curl --location --request GET 'localhost:8080/summary/abc'
响应
{
"id": "abc",
"metrics": [
{
"id": "abc",
"value": 6,
"count": 3,
"transactionIds": [
"3rd",
"2nd",
"1st"
]
},
{
"id": "bcd",
"value": 12,
"count": 3,
"transactionIds": [
"3rd",
"2nd",
"1st"
]
},
{
"id": "fff",
"value": 1,
"count": 1,
"transactionIds": [
"3rd"
]
}
]
}
灵活的属性存储
curl --location --request POST 'localhost:8080/drawer/abc' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "abc",
"values": {
"google" : "123",
"fb": "abc"
}
}'
curl --location --request GET 'localhost:8080/drawer/abc'
响应
{
"id": "abc",
"values": {
"google": "123",
"fb": "abc",
"insta": "1222"
}
}
下面使用的多数命令都是使用 Lettuce Redis 命令注释实现的。
GRAPH.QUERY experiments :cmd
GRAPH.QUERY MATCH (u:User)-[:participants]->(:Exp {id: '$experimentId'}) RETURN COUNT(u.id)
GRAPH.QUERY MERGE (:User {id: '$emitterId' })-[:participants]->(:Exp {id: '$experimentId' }
TS.ADD :id * :value RETENTION :retention LABELS category :category type :type :labels
JSON.SET :id . :json")
JSON.GET :id .")
JSON.SET :id :path :value
JSON.GET :id :path
A/B 测试已成为当今数字领域中任何营销人员的必备工具。但获得此软件可能会很昂贵,迫使许多人使用次优的网站。更糟糕的是,创建自己的拆分测试软件本身就存在编程困难。
创建这样的应用程序需要一个功能强大且通用的数据库,该数据库能够在组件之间高效地传输数据。然而,尽管存在这些障碍,Redis 还是消除了所有这些障碍。
只需在您的笔记本电脑上使用 Redis,您就可以对网站上的任何变量进行 A/B 测试,并将自己与目标市场更紧密地联系起来。如果您想了解有关此应用程序的更多信息,请确保 观看此 YouTube 视频。
然而,尽管有这些需求,Redis 的高级数据处理能力使组件之间的数据传输既高效又可靠,从而创建了一个响应速度极快的应用程序。
这意味着没有延迟、没有滞后,并且用户与应用程序之间没有任何摩擦。只需在您的笔记本电脑上使用 Redis,您就可以对网站上的任何变量进行 A/B 测试,并将自己与目标市场更紧密地联系起来。
如果您想了解有关此应用程序的更多信息,请确保 观看此 YouTube 视频。
如果您喜欢这篇文章,那么我们还有更多文章供您在 Redis Launchpad 上发现。从创建实时车辆跟踪系统到构建强大的无人机系统来保护发展中国家的作物保险公司,Redis 已经被世界各地的程序员用来改善日常生活。
您可以使用 Redis 做什么?
Thiago Camargo
如果您喜欢这个应用程序,请 确保访问 Thiago 的 GitHub 页面,以了解他参与的所有项目的最新信息。