2016-06-26 2 views
1

私はPOCOオブジェクト(〜80k)のリストを持っています。私はこれらのオブジェクトをRedisに格納するためにさまざまな方法を試しました。ServiceStack.Redis:redisClient.StoreAll()を使用して格納されたオブジェクトプロパティによってオブジェクトのサブセットを照会します。

redisClient.StoreAll()(http://docs.servicestack.net/redis-client/redis-client)を参照してください。格納されているすべてのオブジェクトを取得するには、redisClient.GetAll()を実行します。私はどのように基準に基づいてオブジェクトのサブセットをクエリすることができます知っていると思います。

答えて

0

Redisのデータは通常keyによってアクセスされ、Redisはredisに対して実質的に不透明な値を照会するための明示的なサポートを持っていないため、クエリの意味は不明です。

store related objects in Redis using the ServiceStack.Redis clientのこの前の回答を読むことをお勧めします。インデックスを使用してタイプ間の関係を作成する方法を示します。

あなただけのキーを検索したい場合は、Redis Scan APIsを使用することができ、例えば:

var userKeyPattern = IdUtils.CreateUrn<User>("*"); //= urn:User:* 
var scanUsers = Redis.ScanAllKeys(userKeyPattern); 
//Stop after retrieving 10000 user keys 
var sampleUsers = scanUsers.Take(10000).ToList(); 

しかし、あなたが解析するカスタムLUAスクリプトを作成しない限り、あなたはRedisの値のカスタムアドホックサーバー側の照会を行うことはできませんJSON値のペイロード。それ以外の場合は、クライアント上で結果をフェッチし、それらをメモリ内で照会する必要がある、維持したいすべての関係のカスタム索引を作成する必要があります。

+0

あなたの説明をありがとう。サービススタックRedis Listの実装を説明するのに役立つかもしれません。今、私がすることができたように見える ' ;' 'typedClient.Lists [ "securityprojections"] AddRange(項目); – Afzi

+0

' VARのtypedClient = client.As ():私は私の80K POCO次のコードを使用してオブジェクトを追加しました(w => w.Ticker == "FTS CN")。ToList(); ' まず最初に、それは次のコードを使用してこのリストをクエリします: ' var results = typedClient.Lists ["securityprojections"とても早い。予想される結果を確認したところ、結果が間違っていた行が少なすぎることが判明しました。舞台裏で何が起こっているのか説明できますか? – Afzi

+0

@Afzi新しい質問がある場合は、新しい質問をする場合はコメントにコードを入れないでください。 'typedClient.Lists [" securityprojections "]。GetAll()'を使うと、リストからすべての項目を取得できます。 – mythz

関連する問題