gpt4 book ai didi

php - 使用redis的新闻提要

转载 作者:IT王子 更新时间:2023-10-29 06:14:20 26 4
gpt4 key购买 nike

我有以下表结构,我在其中存储用户的事件,如“产品创建”

编号用户身份type_id类型动词数据创建时间updated_at

每当产品发生事件时(产品订单已经到来),我需要更新更新时间,以便记录出现在第一位,因为用户将看到“使用 updated_at 排序”行数据。我在这里指的提要将由单个用户使用,这里没有关注的概念。因此,无论谁创建了提要,都将看到他自己的提要。如果提要上有更新(某人对该产品下的订单),它应该会上升。

所以下单的时候,我会更新条目的更新时间,让它出现在第一位。

我打算使用 redis 进行读取,但我对更新部分感到很困惑。我将如何处理这种情况。

我尝试了什么?

创建表结构如下

  1. 编号
  2. user_id - 创建事件的用户
  3. 事件 - created_product
  4. event_id - 产品表的 product_id
  5. data - 商品详情的json对象
  6. 创建于
  7. 更新时间

收到订单时

updated_at 时间戳已更新。这样记录就会出现在用户提要的顶部。

但这似乎不是一个合适的解决方案,因为频繁更新可能会导致行锁定和更多等待。我该如何解决这个问题?

最佳答案

好吧,你可以在 redis 中创建排序集:

FEED:USER_ID 包含以下值:

PRODUCT_ID - 最后更新时间作为分数

然后通过从redis 获得的id 从数据库中获取产品。

但是如果您主要关心的是行锁定,那么也许您应该只对更新进行排队?创建 redis 排序集“PRODUCT_UPDATED”并在更新产品时添加行:

USER_ID#PRODUCT_ID - 将时间更新为分数

然后创建一些后台 CRON 作业,该作业将更新在该排序集中找到的产品。您可以每秒或每 30 秒执行一次,您可以限制更新次数等...

关于php - 使用redis的新闻提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35475923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com