弹出式商店正在成为零售商创造新的收入来源、与客户产生共鸣、测试产品概念或处理过剩库存的热门渠道。由于想法是快速启动商店,然后尽快关闭它,因此在开发上花费大量时间是没有意义的。使用正确的 Redis 模块,您可以创建强大的客户体验,而无需进行大量开发工作。
此弹出式商店演示说明了一家销售单一产品且有 10,000 件产品可供购买的公司。每个客户可以购买一件产品,销售持续时间仅为 10 分钟,因此订单处理必须即时完成。演示展示了如何使用 Redis 流、Redis 时间序列、RedisGears 和 Redis 数据源与 Grafana 实时可视化数据管道。
git clone https://github.com/redis-developer/redis-pop-up-store/
docker-compose up -d
打开 https://IPAddress:3000 访问 Grafana 仪表板
Grafana 每 5 秒查询一次流和时间序列键,以使用 Grafana Redis 数据源显示样本。此 Grafana 仪表板显示
StreamReader
监视所有 queue:
键并添加时间序列样本# Add Time-Series
def tsAdd(x):
xlen = execute('XLEN', x['key'])
execute('TS.ADD', 'ts:len:'+x['key'], '*', xlen)
execute('TS.ADD', 'ts:enqueue:' + x['key'], '*', x['value'])
# Stream Reader for any Queue
gb = GearsBuilder('StreamReader')
gb.countby(lambda x: x['key']).map(tsAdd)
gb.register(prefix='queue:*', duration=5000, batch=10000, trimStream=False)
queue:complete
流中# Complete order
def complete(x):
execute('XADD', 'queue:complete', '*', 'order', x['id'],
'customer', x['value']['customer'])
execute('XDEL', 'queue:customers', x['value']['customer'])
execute('DECR', 'product')
# Stream Reader for Orders queue
gb = GearsBuilder('StreamReader')
gb.map(complete)
gb.register(prefix='queue:orders', batch=3, trimStream=True)