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

Redis to pojedynczy wątek. Dlaczego więc powinienem używać sałaty?

Ponieważ spędzasz czas nie tylko podczas wykonywania poleceń przez Redis, ale także na przesyłaniu danych (wysyłanie poleceń, odbieranie wyników). W trybie pojedynczego wątku podczas przesyłania Redis nie działa. Podczas gdy Redis działa, transfer nie następuje. Wiele połączeń lub jedno połączenie potokowe są tutaj, aby pomóc Ci nasycić zarówno przepustowość, jak i cykle procesora.

A luttece to nie tylko prędkość. Pomaga również lepiej zorganizować kod dzięki asynchronicznemu i reaktywnemu interfejsowi API.

Wracając do tematu wydajności, oto prosty test porównawczy, aby uzyskać ogólne zrozumienie wpływu wątków i puli. Zauważ, że chociaż tworzenie puli jest nieco wolniejsze (spędzisz trochę czasu na operacjach puli), pozwala to na odizolowanie akcji (aby błąd nie wpływał na inne wątki) i użycie MULTI i blokowanie poleceń.

Oto moje wyniki (system lokalny ma 4 rdzenie, procesor systemu zdalnego jest około 2 razy wolniejszy):

Wątki=1

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  35389.995 ± 1325.198  ops/s
LettuceThreads.pooled  localhost  thrpt   25  32075.870 ±  416.220  ops/s
LettuceThreads.pooled     remote  thrpt   25   3883.193 ±   67.622  ops/s
LettuceThreads.shared     socket  thrpt   25  39419.772 ± 1966.023  ops/s
LettuceThreads.shared  localhost  thrpt   25  34293.245 ± 1737.349  ops/s
LettuceThreads.shared     remote  thrpt   25   3919.251 ±   49.897  ops/s

Wątki=2

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  56938.187 ± 2727.772  ops/s
LettuceThreads.pooled  localhost  thrpt   25  49420.748 ± 2091.631  ops/s
LettuceThreads.pooled     remote  thrpt   25   7791.706 ±  133.507  ops/s
LettuceThreads.shared     socket  thrpt   25  81195.900 ± 1593.424  ops/s
LettuceThreads.shared  localhost  thrpt   25  78404.688 ± 3878.044  ops/s
LettuceThreads.shared     remote  thrpt   25   3992.023 ±   39.092  ops/s

Wątki=4

Benchmark              (address)   Mode  Cnt       Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25   87345.126 ± 8149.009  ops/s
LettuceThreads.pooled  localhost  thrpt   25   75003.031 ± 4481.289  ops/s
LettuceThreads.pooled     remote  thrpt   25   15807.410 ±  225.376  ops/s
LettuceThreads.shared     socket  thrpt   25  169112.489 ± 3749.897  ops/s
LettuceThreads.shared  localhost  thrpt   25  115464.778 ± 5099.728  ops/s
LettuceThreads.shared     remote  thrpt   25    7952.492 ±  133.521  ops/s

Widać tutaj, że wydajność bardzo dobrze skaluje się wraz z liczbą wątków, więc sałata nie jest bezużyteczna.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ściągawka z optymalizacją pamięci Redis

  2. Odinstaluj Redis na Mac OSX. Starsza wersja działa po zainstalowaniu aktualizacji

  3. Błąd kanałów Django - Nie można zaimportować BACKEND 'asgi_redis.RedisChannelLayer'

  4. Połącz się z redis z innego kontenera w docker

  5. Redis:Jak przeciąć normalny zestaw z posortowanym zestawem?