postgresql - 只用redis来实现activity stream有多安全?

标签 postgresql design-patterns stream redis social-networking

我正在构建一个网站,允许用户“关注”不同的成员,每当该成员发帖时,它都会按时间倒序将其添加到所有关注者事件流中。这些天很常见的东西。

但我无法确定最可扩展/面向 future 的实现方式(无连接)。

我正在使用 flask/heroku/sqlalchemy/postgres。我正在考虑使用 Open-redis 插件并做一些类似 instagram 提到的事情:每个用户都有一个 redis 列表,每当“关注”帖子时,它都会将该帖子添加到每个关注者列表的开头并缩减其总大小。

我对 Redis 的了解还不够,无法确定对每个用户流单独依赖它是否安全。对于 open-redis,他们没有提到任何关于持久性的事情,所以我不知道这是否只是一个假设的常见事情。

如果 redis 不是 100% 可靠/安全,关于我如何使用 postgres/Hstore 做到这一点的任何想法(请不要加入)。

最佳答案

我们为第二大在线时尚社区构建了一个解决方案,并开源了我们的方法: https://github.com/tschellenbach/Feedly 它是目前最大的旨在解决这个问题的开源库。 您可以同时使用 Redis 和 Cassandra 作为存储后端。

我们已经在 Redis 上运行了一年多,没有遇到任何问题。如果设置正确,它会运行得非常稳定,并且不太可能丢失数据。

构建 Feedly 的同一个团队还提供了一个托管 API,它可以为您处理复杂的问题。看看getstream.io有用于 Python、PHP、Node 和 Ruby 的客户端库。

此外,请查看这篇高可扩展性文章,我们解释了一些涉及的设计决策: http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

This tutorial将帮助您使用 Redis 设置类似 Pinterest 提要的系统。入门非常简单。

要了解有关 Feed 设计的更多信息,我强烈建议阅读我们基于 Feedly 的一些文章:

关于postgresql - 只用redis来实现activity stream有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525307/

相关文章:

postgresql - Golang 测试中可重用的组件和固定装置

c# - 面向对象编程 : Separation of Data and Behavior

design-patterns - 无用的接口(interface)

c# - 通过套接字发送流

java - 从 Java FileInputStream 中读取行而不会丢失我的位置

java - 创建流而不是临时文件并使用它们并丢弃它们

sql - LIKE 100k 记录上的 2 列或 200k 记录上的一列更快吗?

postgresql - wso2 GREG 4.5.0 和 postgresql 作为外部数据库的问题

java - 如何强制自动生成正向 hibernate 主键

algorithm - 如何将异构平面数据转化为数据结构