我有下表结构,其中存储用户的活动,比如“产品创建”
id user_id type_id类型动词数据created_at updated_at
每当一个事件发生在类似的产品上(产品的订单来了),我需要更新更新的时间,以便记录出现在第一个,因为用户将看到‘使用updated_at’行数据排序。我在这里所指的提要将由单个用户使用,这里没有遵循的概念。所以,不管是谁创造了一个饲料,都会看到他自己的饲料。如果有更新(某个人在该产品上下的订单)出现在提要上,它应该会上升。
因此,在下订单时,我将更新条目的更新时间,使其出现在第一个条目中。
我计划在读取时使用redis,但是在更新部分我很困惑。我该怎么处理这个案子。
我试过什么?
创建表结构如下
当收到订单时
更新updated_at时间戳。这样记录就会出现在用户提要的顶部。
但这似乎不是一个合适的解决方案,因为行的频繁更新可能会导致行锁定和更多的等待。我该怎么解决这个问题?
发布于 2016-02-18 08:20:26
那么,您可以用redis创建排序集:
包含值的FEED:USER_ID:
PRODUCT_ID -最后更新时间作为得分
然后通过从redis获得的ids从数据库中获取产品。
但是,如果您的主要关注点是行锁定,那么也许您应该只进行队列更新?在更新产品时创建redis排序集"PRODUCT_UPDATED“并添加行:
USER_ID#PRODUCT_ID -更新时间作为评分
然后创建一些后台CRON作业,它将更新在排序集中找到的产品。你可以每秒钟做一次,或者每30秒一次,你可以节流更新的次数等等.
https://stackoverflow.com/questions/35475923
复制相似问题