2013-04-15 33 views
1

我有商店的下面值查詢:Redis的不能爲特定的標準

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,我可以存儲這些類型的值?

回答

1

使用Redis,您只需手動處理二級索引,方法是維護set或hash對象。

當您添加一個對象,管道下面的查詢:

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 

如果您需要查詢的項目對於給定的子ID和收件人:

SINTER subId:10 Recipient:999999999999 

然後你只需要一個額外的往返獲取與返回的id相對應的數據。實際上,許多分佈式NoSQL存儲(除了純鍵/值(例如memcached))可以處理二級索引(手動或自動):Couchbase,CouchDB,Cassandra,Riak,Neo4j,OrientDB,Hyperdex, ArrangoDB等...