快闪店正成为零售商创造新收入来源、吸引客户、测试产品概念或清理多余库存的流行渠道。由于这种商店旨在快速搭建并在不久后关闭,因此花大量时间进行开发是没有意义的。借助合适的 Redis 模块,您可以轻松构建强大的客户体验,而无需大量开发工作。
这个快闪店演示展示了一家销售单一产品且有 10,000 件库存可供购买的公司。每位客户限购一件,销售仅持续 10 分钟,因此订单处理必须是即时的。该演示展示了如何使用 Redis Streams、Redis Time Series、RedisGears 和 Grafana 的 Redis 数据源实时可视化数据管道。
git clone https://github.com/redis-developer/redis-pop-up-store/
docker-compose up -d
打开 http://IPAddress:3000 访问 Grafana 仪表板
Grafana 每 5 秒查询 streams 和 Time-Series 键,使用 Grafana Redis 数据源显示样本。此 Grafana 仪表板显示
StreamReader
监控所有 queue:
键并添加 Time-Series 样本# 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
stream# 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)