使用Redis + Node.js的数据库体系结构
继其他一些SO问题之后,我正在开发一个网站监控应用程序作为一个宠物项目,目的是更多地了解Node.js + Redis。
我计划的是让用户添加url,并将其添加到Redis SET
。 每一分钟,我都会得到SET结果,做一个HTTP Get请求并打印响应。
这似乎工作正常,但是,我有几个问题:
-
鉴于Redis SET不允许重复键(这将使我无法再请求到同一个URL),但是如何控制用户从他的帐户中删除URL但其他用户具有相同的URL? 我可以在URL中使用
INCR
值吗?我知道有多less用户在他们的帐户中有URL? -
鉴于我每分钟都会做一个HTTP请求,而且我想使用Redis来保存结果(响应时间,上/下等), 那么在Redis中保存所有数据的最佳方式是什么分钟)? 我应该将每个响应保存在一个独特的Redis密钥中吗?
-
为了向用户实时显示结果,查询结果并实时parsing结果的最佳方法是什么?
谢谢您的帮助。
我认为你应该开始在redis-cli
编写原型。 我还想指出Simon Willison解释redis的这篇很好的文章。
鉴于Redis SET不允许重复键(这将使我无法再请求到同一个URL),但是如何控制用户从他的帐户中删除URL但其他用户具有相同的URL? 我可以在URL中使用INCR值吗?我知道有多less用户在他们的帐户中有URL?
我会使用SADD + INCR 。
SADD urls http://www.google.com INCR http://www.google.com
要删除http://www.google.com
我只需要执行以下操作:
DECR http://www.google.com #Only if DECR http://www.google.com => 0, then you should remove from SET SREM urls http://www.google.com
鉴于我每分钟都会做一个HTTP请求,而且我想使用Redis来保存结果(响应时间,上/下等),那么在Redis中保存所有数据的最佳方式是什么分钟)?
我将为每个URL使用唯一的密钥,并使用MSET将数据写回到redis( JSON.stringify(obj)
)。
MSET data:http://www.google.com "{json for google}" data:http://www.yahoo.com "{json for yahoo}"
为了向用户实时显示结果,查询结果并实时parsing结果的最佳方法是什么?
我会通过MGET得到结果并parsingjson( obj = JSON.parse(json-string)
)。