sql >> Databasteknik >  >> NoSQL >> Redis

Redis är långsam med att få stora strängar

Redis är inte utformad för att lagra mycket stora föremål. Det är inte meningen att du ska lagra hela din samling i en enda sträng i Redis, utan istället använda Redis-listan eller ställa in som en behållare för dina objekt.

Dessutom är pickle-formatet inte optimerat för utrymme ... du skulle behöva ett mer kompakt format. Protokollbuffertar, MessagePack eller till och med vanlig JSON är förmodligen bättre för detta. Du bör överväga att använda en lätt komprimeringsalgoritm innan du lagrar dina data (som Snappy, LZO, Quicklz, LZF, etc ...).

Slutligen är prestandan förmodligen nätverksbunden. På min dator tar det 85 ms att hämta ett 20 MB objekt från Redis (inte 3 sekunder). Om jag nu kör samma test med en fjärrserver tar det 1,781 sekunder, vilket förväntas på detta 100 Mbit/s-nätverk. Längden är helt beroende av nätverkets bandbredd.

Sista punkten:se till att använda en ny Redis-version - ett antal optimeringar har gjorts för att hantera stora objekt.



  1. Korrekt sätt att använda Redis Connection Pool i Python

  2. Hur ofta ska jag öppna/stänga min Booksleeve-anslutning?

  3. Infoga json-filen i mongodb

  4. Redis py:när ska man använda anslutningspoolen?