1

我要存储以下值:

subId 10 Recipient 999999999999 file /home/sach/ status 1.

我使用 REDIS 来存储这些值。前任:

HMSET 1 subId 10 Recipient 999999999999 file /home/sach/ status 1

但是对于 REDIS,我无法查询特定条件,因为 REDIS 只能使用关键字段进行查询。例如,我只需要查询Recipient 988888888888,但 REDIS 缺少这种查询。

除了 Mongo 和 Mysql 之外,还有其他简单的数据库可以存储这些类型的值吗?

4

1 回答 1

1

使用 Redis,您只需通过维护集合或哈希对象来手动处理二级索引。

添加对象时,通过管道处理以下查询:

HMSET 1 subId 10 Recipient 999999999999 file /home/sach/ status 1
SADD subId:10 1
SADD Recipient:999999999999 1
SADD file:/home/sach/ 1
SADD status:1 1

如果您需要查询给定 subId 和收件人的项目:

SINTER subId:10 Recipient:999999999999 

然后你只需要一个额外的往返来获取与返回的 id 对应的数据。

实际上,许多分布式 NoSQL 存储,除了纯键/值存储(例如 memcached),可以处理二级索引(手动或自动):Couchbase、CouchDB、Cassandra、Riak、Neo4j、OrientDB、Hyperdex、ArrangoDB 等。 ..

于 2013-04-15T07:37:41.573 回答