push.md 2.11 KB

个性化推送

redmine: http://redmine.yoho.cn/issues/5172

注意

因为当前大数据只在aws部署,java个性化推送功能也只在aws上生效。

推送需要支持的配置

  • 支持动态关闭、启用某个场景的推送(不提供后台页面)
  • 支持动态设置某种场景的推送发送时间(4月底版本不实现)

推送支持简单的统计和日志

  • 统计当天推送情况(场景、品牌、用户数据),写入到influxdb中
  • 推送日志,方便大数据统计推送效果。 格式为: <推送场景>:<品牌ID>:<用户ID>

当前支持场景

  • 上新后推送
  • 改价后推送
  • 修改了vip价格后推送

java 与 大数据之间的接口

获取收藏&购买过某个品牌的用户列表

Redis SortedSet, KEY 为 BD:BRAND_RELATED_USERS:001, 001是品牌的ID, Element为用户ID列表,[10232323, 105656565], SCORE为用户的VIP等级.

获取上新的品牌列表, ,只保存最早的20条

Redis List, KEY 为 BD:LAST_ADDED_BRANDS:2016-04-18, VALUE为品牌ID列表,[001, 002, 003] 最左边是当前最早上新的品牌.

获取改价的品牌列表,只保存最早的20条

Redis List, KEY 为 BD:LAST_PRICE_DOWN_BRANDS:2016-04-18, VALUE为品牌ID列表,[001, 002, 003] 最左边是当前最早改价的品牌.

获取设置了VIP价格的品牌列表,只保存最早的20条

Redis List, KEY 为 BD:LAST_VIP_BRANDS:2016-04-18, VALUE为品牌ID列表,[001, 002, 003] 最左边是当前最早修改了VIP价格的品牌.

限制:某种场景的推送(例如 上新后推送)保证当天用户只收到一条,但是用户当天可以同时收到上新后推送改价后推送

例如,品牌相关用户关系如下:

B1 --> {u1, u2, u3, u4}
B2 --> {u2, u3, u5}

大数据每天计算出当天上新的20个品牌,例如: {B1,B2,B3, …. B20}

推送先推送B1关注用户->{u1, u2, u3, u4}, 然后推送B2关注用户-> {u2, u3, u5}, 发现u2,u3已经推送了上新消息,则不需要推送,只推送用户u5