使用Redis构建一个弹出式商店应用程序

快闪店正在成为零售商创造新的收入来源、与客户产生共鸣、测试产品概念或卸载多余库存的热门渠道。因为我们的想法是快速发展商店,然后在不久之后关闭它,所以投入大量时间在开发上是没有意义的。有了正确的Redis模块,你就可以在无需大量开发努力的情况下创建强大的客户体验。

这个弹出式商店演示了一个销售单一产品并有10,000个可供购买的产品的公司。每个客户可以购买一个单位,销售只持续10分钟,所以订单处理必须是即时的。这个演示演示了如何可视化数据管道在实时使用Redis StreamsRedisTimeSeriesRedisGears带有Grafana的Redis数据源

弹出

步骤1。克隆存储库

git克隆https://github.com/redis-developer/redis-pop-up-store/

步骤2。运行应用程序

docker-compose了-

步骤3。访问Grafana仪表板

打开http://IPAddress:3000 要访问grafana仪表板

Grafana

Grafana每5秒查询流和时间序列键,使用Grafana Redis Datasource显示样本。这个Grafana仪表盘显示:

  • 可用产品:产品密钥的值,随订单完成而减少
  • 客户订购、订单处理和订单完成:队列:客户、队列:订单和队列:完成流的长度
  • 客户溢出:客户提交的订单与完成的订单之间的差异
  • 客户订购:在5秒内创建订单
  • 排队中的订单:等待处理的订单
  • 完成流程:5秒内完成订单

它是如何工作的

简图

  • js脚本将随机数据添加到客户和订单流中
  • RedisGears正在使用流阅读器监视所有队列:键和添加时间序列样本
#添加时间序列
def tsAdd (x):
xlen = execute(' xlen ', x['key'])
执行('TS.ADD','TS:len:'+x['key'],'*',xlen)
执行(' TS。ADD', 'ts:enqueue:' + x['key'], '*', x['value'])
#任何队列的流读取器
gb = GearsBuilder(“StreamReader”)
gb.countby(lambda x:x['key']).map(tsAdd)
gb。注册(prefix='queue:*', duration=5000, batch=10000, trimStream=False)
  • 另一个RedisGears脚本完成订单
    • 将数据添加到队列:完成
    • 删除客户的订购
    • 减少产品数量
    • 修剪命令队列
#完整订单
def完成(x):
执行('XADD','queue:complete','*','order',x['id'],
“客户”,x(“价值”)(“客户”))
执行(“XDEL”、“队列:客户”,x(“价值”)(“客户”))
执行(“12月”,“产品”)
#读取订单队列的流
gb = GearsBuilder(“StreamReader”)
gb.map(完成)
gb。注册(前缀=队列:订单,批量= 3,trimStream = True)

添加资源

Baidu