假設在您的Web應用程序中,您需要執行一些redis調用來呈現頁面,例如獲取一堆用戶哈希值。爲了加快速度,您可以在MULTI/EXEC部分中包裝redis命令,從而使用流水線操作,以避免進行多次往返。但是你也想分割你的數據,因爲你有很多它和/或你想分配寫入。那麼流水線將無法工作,因爲不同的密鑰可能會存在於不同的節點上,除非您清楚地瞭解應用程序和基於角色的碎片的數據佈局,而不是使用散列函數。那麼,爲了完成「概念獨特」的工作,很多服務器被聯繫起來,在不影響性能的情況下跨越不同服務器分割數據的最佳實踐是什麼?我相信答案取決於正在開發的Web應用程序,並且我最終會進行一些測試,但瞭解其他人如何應對我提到的取捨問題會很有幫助。redis分片,流水線和往返
6
A
回答
4
MULTI/EXEC和流水線是兩個不同的東西。你可以做任何流水線MULTI/EXEC,反之亦然。
如果要同時分片和管道,則需要將操作分組到每個Redis實例的流水線,然後對每個實例使用流水線。
下面是一個使用Ruby的一個簡單的例子:https://gist.github.com/2587593
一個以進一步提高性能的方法是並行的Redis的情況下,交通一度的操作進行了分組(即你組的操作,您將它們發送給所有並行的實例,你等待所有實例的答案)。
這有點複雜,因爲需要一個異步非阻塞客戶端。爲了獲得最佳性能,應在客戶端使用C/C++。這可以通過使用hiredis +您選擇的事件循環輕鬆實現。
相關問題
- 1. Redis流水線
- 2. CacheManager.Net - Redis流水線
- 3. Redis流水線執行順序
- 4. Redis Muti/Exec vs流水線性能
- 5. Redis流水線,處理緩存丟失
- 6. 作爲原子的Redis流水線
- 7. CMake往返工作流程
- 8. HTTP BOSH和HTTP流水線
- 9. 流水線工作流程和變量
- 10. 在流水線
- 11. 與流水線
- 12. 流水線vs
- 13. Bitbucket流水線
- 14. PowerShell的流水線只返回集合
- 15. 是否有可能捕獲流水線塊內的redis異常?
- 16. 可以redis流水線依賴於以前的多個命令?
- 17. 如何在Redis中插入(替換)操作? (如流水線)
- 18. redis可以禁用流水線命令的回覆嗎?
- 19. Redis客戶端如何實現流水線操作?
- 20. Jenkins流水線結果度量分析
- 21. 流到mysql的流水線
- 22. 裝配流水線
- 23. WebServices流水線(Springboot)
- 24. 是68HC11流水線?
- 25. 流水線功能
- 26. 並行流水線
- 27. Android HTTP流水線
- 28. 流水線架構
- 29. DataTables,Ajax流水線
- 30. 蘇打水往往拋出java.lang.ArrayIndexOutOfBoundsException:65535
感謝一百萬的洞察力,尤其是關於並行化流量的一點! – idrarig