1
剛開始研究redis。Redis讀取/寫入
Redis是一個單線程進程。
這是否意味着所有操作(例如,hset,hget等)都是以串行方式執行的 - 也就是說,通過以下操作:
hset foo:bar name 'Redis'
hget foo:bar name
hget只會在hset後執行嗎?
剛開始研究redis。Redis讀取/寫入
Redis是一個單線程進程。
這是否意味着所有操作(例如,hset,hget等)都是以串行方式執行的 - 也就是說,通過以下操作:
hset foo:bar name 'Redis'
hget foo:bar name
hget只會在hset後執行嗎?
是的Redis實例是單線程的,所有的基本操作都是原子操作和序列化操作。藉助Redis,您可以獲得併發性,但不具有並行性。
在你的例子中,你有保證hget總是在hset後執行。
您還可以保證,當您在Redis連接上發送多個查詢時,應答將以相同的順序返回(即Redis支持協議流水線)。
請注意,只有與Redis實例的給定連接纔是真實的。如果數據在多個實例中分片,則將使用多個連接,並且在不同連接上發送的查詢之間不存在這樣的保證。
通常在一臺機器上啓動多個Redis實例,比如每個內核啓動一個Redis實例以充分利用CPU。 – 2012-04-26 03:06:40
是的,在這種情況下,您不能保證在不同實例上的操作順序。但是,您仍然保證涉及給定鍵(存儲在給定實例中)的操作是序列化的。 – 2012-05-19 08:44:03