2013-06-14 13 views
21

Wie behandelt Redis mehrere Threads (von verschiedenen Clients), die dieselbe Datenstruktur in Redis aktualisieren? Was ist die empfohlene Best Practice für einen solchen Anwendungsfall?Sind redis-Operationen auf Datenstrukturen threadsicher

+0

Siehe http://stackoverflow.com/questions/10489298/redis-is-single-threaded-then-how-does-it-do -concurrent-io/10495458 # 10495458 –

Antwort

42

Wenn Sie das Little redis Buch an irgendeinem Punkt lesen, kommt dieser Satz.

„Sie wissen es vielleicht nicht, aber Redis ist eigentlich Single-Threaded, das ist, wie jeder Befehl atomar sein garantiert. Während ein Befehl ausgeführt wird, kein anderer Befehl laufen wird.“

Werfen Sie einen Blick in http://openmymind.net/2012/1/23/The-Little-Redis-Book/ für weitere Informationen

Grüße

+2

so scheint 'asyncio_redis' sinnlos? – Juggernaut

+2

@Juggernaut Sie würden asyncio verwenden, wenn Ihr Python-Code bei Redis-Aufrufen nicht blockieren soll. Asyncio ist nur eine nicht blockierende Python-Bibliothek und keine Bibliothek, um Transaktions- oder Nebenläufigkeitsdatenbankprobleme zu lösen. Im Wesentlichen befinden sich asyncio_redis und redis auf zwei verschiedenen Layern auf Ihrem Stack und schließen sich daher nicht gegenseitig aus. Wenn Ihre Anwendung redis verwendet und Sie möchten, dass Ihre redis-Aufrufe asynchron sind, sollten Sie asyncio_redis verwenden. Hoffe, das hilft. – andrefsp

+0

Ich denke, Sie können hier eine Antwort geben @andrefsp http://stackoverflow.com/questions/42597328/redi-block-untill-key-exists – Juggernaut

Verwandte Themen