根据其他一些SO问题,我正在开发一个网站监控应用程序作为宠物项目,目的是了解有关Node.js + Redis的更多信息。
我计划的是让用户添加网址并将其添加到Redis SET
。每分钟,我都会得到SET结果,执行HTTP Get请求并打印响应。
这似乎工作正常,但是,我有几个问题:
鉴于Redis SET不允许重复键(这将使我无法对同一URL请求),如何控制用户何时从其帐户中删除URL但另一个用户具有相同的URL ? 我可以在网址密钥中使用INCR
值,以便知道有多少用户在其帐户中拥有该网址吗?
鉴于我每分钟都做一次HTTP请求,我想使用Redis保存结果(响应时间,上/下等),在Redis中保存所有数据的最佳方法是什么(每分钟对每个网址的请求结果)?我应该用一个独特的Redis密钥保存每个响应吗?
为了向用户实时显示结果,查询结果并实时解析结果的最佳方法是什么?
感谢您的帮助。
答案 0 :(得分:5)
我认为你应该开始在redis-cli
中编写原型。另外,我想从Simon Willison explaining redis中指出这篇非常好的文章。
鉴于Redis SET不允许 重复的键(这将拯救我 如何对同一URL做请求) 在用户删除时控制 来自他的帐户但其他用户的网址 有相同的URL?我可以有INCR吗? URL键中的值,所以我知道如何 很多用户都有自己的网址 帐户?
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中的数据(来自 每分钟都要求每个网址?
我会为每个网址使用唯一的密钥,并使用MSET将数据作为json(JSON.stringify(obj)
)写回redis。
MSET data:http://www.google.com "{json for google}" data:http://www.yahoo.com "{json for yahoo}"
为了向用户显示结果 实时,最好的方法是什么 查询结果并解析它 实时?
我会通过MGET获得结果并解析json(obj = JSON.parse(json-string)
)。