Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Czy jest to prawidłowe użycie ServiceStack Redis?

Właściwie, gdy używasz PersonClient.Lists["urn:names:current"] w rzeczywistości przechowujesz odwołanie do połączenia RedisClient, które nie jest bezpieczne dla wątków. Jest w porządku, jeśli jest w aplikacji GUI lub konsoli, ale nie jest idealne w wielowątkowej aplikacji internetowej. W większości scenariuszy chcesz używać fabryki połączeń bezpiecznych dla wątków, tj.

var redisManager = new PooledRedisClientManager("localhost:6379");

Działa bardzo podobnie do puli połączeń bazy danych. Więc kiedy chcesz uzyskać dostęp do RedisClient działa tak:

using (var redis = redisManager.GetClient())
{
    var allItems = redis.As<Person>().Lists["urn:names:current"].GetAll();
}

Uwaga:.As<T> to krótszy alias dla .GetTypedClient<T> Innym wygodnym skrótem do wykonania wpisanego klienta z redisManagera jest:

var allItems = redisManager.ExecAs<Person>(r => r.Lists["urn:names:current"].GetAll());

Zwykle wolę przekazać IRedisClientsManager w moim kodzie, więc nie utrzymuje połączenia RedisClient, ale może uzyskać do niego dostęp, kiedy tylko zajdzie taka potrzeba.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Akcenty przechowywane w Redis nie są czytelne

  2. Błąd podczas ładowania bibliotek współdzielonych, nie można otworzyć pliku obiektu współdzielonego:Brak takiego pliku lub katalogu (hiredis)

  3. Czy redis na Heroku jest możliwy bez dodatku?

  4. Używanie redis z node.js (ekspresowe)

  5. doRedis zwraca błędy w systemie Windows 8 x64 dla różnych wersji serwera Redis