Redis 的效能有體驗過的朋友應該都是有目共睹的,最近遇到一個一次要寫入 16 萬筆資料的場景,測試環境的 VM 規格都是最基本的,在測試環境測試一筆一筆寫入要大概將近 20 分鐘,而且還會 Timeout,心想即使規格不高 16 萬筆應該也不至於這麼慢吧,爬了一下文大概找到了兩種解法。
[廚餘回收] Redis 裝在 GCE Windows Server 上須注意一下虛擬記憶體的設定
某個週末公司某個裝在 Windows Server 上的 Redis 服務掛點,從 Server Log 看到下面這段錯誤:
# Write error saving DB on disk: Invalid argument
# rdbSave failed in qfork: Invalid argument
# fork operation complete
# Background saving error
是在 Redis 做 Snapshot 的時候沒有成功,進而影響到服務的運作,Snapshot 會失敗大概會有幾個原因:
- 記憶體不足
- 磁碟空間不足
- 權限不足
現在我們就來看看是哪一個原因?
[料理佳餚] C# 在 Redis 發生 Failover 時自動跟著執行 HA 切換
天有不測風雲,人有旦夕禍福;服務在走,HA 要有,先前有介紹過使用 Redis-Sentinel 打造 Redis 的 HA,當時只完成了伺服器端的設定,這次要介紹如何在應用程式這一端也完成自動 failover,以維持服務的 HA。
[料理佳餚] C# ServiceStack.Redis 使用 Redis 的 Cache 及 Message Broker 服務
之前有介紹過[料理佳餚] C# StackExchange.Redis 使用 Redis Message Broker 服務,StackExchange.Redis 稍嫌美中不足,以目前來講 Failover 要自己控制,當然自己控制是沒有什麼問題的,不過既然有其他工具可以幫我們 handle 這一切,當然就讓工具來協助我們。
[料理佳餚] 使用 Redis-Sentinel 打造 Redis 的 HA
Redis 到目前為止都還是以單執行緒的方式在執行,要多個 Redis 就要多設定幾個 instance,這樣如果 Redis crash 了怎麼辦?預設我們可以從 master 的設定檔去設定 slave 是誰,但是 slave 預設是 read-only,而且當 master crash 的時候,不手動做 master、slave 的身份互換,slave 是無法接手 master 的工作,這時候我們可以利用 Redis 內建的 Redis-Sentinel 的工具來解決 failover 的問題。
[料理佳餚] 在 CentOS 7 安裝 Redis(方法二)
在 CentOS 上安裝 Redis 有第二個方法,也是官網上所寫的方法,我也比較推崇這種方式,整個過程雖然修修改改,不過我也藉著這樣繁瑣的步驟了解到 Linux 對於 Daemon Service 的一些基本概念,而且敲很多指令很潮 XD。
[料理佳餚] 在 CentOS 7 安裝 Redis(方法一)
先前已經將 Redis 成功安裝在 Windows Server 上,這次要嘗試著將它安裝在 CentOS 上,自從微軟擁抱開源之後,使用 Linux 當 Host 的 issue 愈來愈多,多學一點沒什壞處。
[料理佳餚] 管理 Redis Cluster(Add Node、Delete Node、Resharding)
Redis Cluster 建立完成後,當然不是建完就擺著可以不用理它,未來有可能會遇到 Scale out 或是資源重新分配的問題,以下介紹如何在我們的 Redis Cluster 上 Add Node、Delete Node、Resharding。
[料理佳餚] 在 Windows 上安裝 Redis Cluster
之前有介紹過在 Winodws 上安裝 Redis,從 Redis 3.0 開始提供了 Cluster 的架構,我們可以把一群 Redis Instance 集合起來使用,而且 Client 端只要存取其中一台就可以獲得相同的數據,以下是 Redis Cluster 的設定步驟。
[料理佳餚] C# StackExchange.Redis 使用 Redis Message Broker 服務
Redis 除了可以用來當 Cache 之外,還可以用來當做 Message Broker,簡單來說就是我訂閱了某個頻道,當這個頻道有訊息被發佈出來之後,我會即時收到帶有訊息的通知,光想到這個我就覺得 Message Broker 可以用來做好多事情,Chating、Notification…etc。
- 1
- 2