【发布时间】:2013-06-02 19:43:14
【问题描述】:
我对 NoSQL 很陌生,但我一直很喜欢它的想法。我查看了Redis,并收到了一些关于存储和接收多个hashes 的最佳方式的问题。
假设如下场景:
Store a list of objects (redis 'Hashes') and select them by their timestamp.
要将其归档到 SQL,需要一个表和两个简单查询(INSERT 和 SELECT)。
尝试在Redis 中执行此操作,我最终创建了以下结构:
- 密钥
object:$id(hash)包含object - 键
index:timestamp:$id(sorted set)score等于timestamp和value包括id
虽然我可以忍受两个键而不是一个表(SQL)的额外维护工作,但我对选择多个对象的过程感到好奇:
ZRANGEBYSCORE index:timestamp:$id timestampStart timestampEnd
这将返回在timestampStart 和timestampEnd 之间创建的所有ID 的array。为了获得对象本身,我通过以下方式请求每个对象:
GET object:$id
- 这是正确的做法吗?
- 与 SQL 数据库相比:由于
GETs 的数量过多,它是否仍然明显更快,甚至可能变得更慢?
【问题讨论】: