【⚡ Cache伺服器 - Redis】別急,我慢慢讓Partial資料流進去Redis JSON

更新 發佈閱讀 4 分鐘

我們在「【🔒 Cache伺服器 - Redis】流式數據處理 - Redis Stream」有介紹關於Stream如何在串流架構下發揮作用, 這個主題我們要來分享一下如何像串流一般持續的部份更新JSON內容, 在開始進入主題之前, 我們先稍微簡介一下Redis JSON吧!


Redis JSON是Redis的一個模組, 它讓我們使用原生的JSON進行儲存與操作, 對於程式實作上來說會更加的直觀, 省去的序列化/反序列化的過程, 甚至一些深入的查詢功能也較為便利, 這也是為了完成今天的主題才能達到的強大功能之一。


簡單的介紹一下相關的操作

存入數據

JSON.SET user:1 $ '{"name": "Alice", "age": 25, "skills": ["Python", "Redis"]}'



取出數據

JSON.GET user:1 $.name

# ["Alice"]



更新json內的某個值

JSON.SET user:1 $.age 26



刪除 JSON 內的某個欄位

JSON.DEL user:1 $.skills



Redis JSON適用的場景

  • 需要存儲結構化數據的應用
  • 實時數據處理
  • 需要高效查詢 JSON 內部數據
  • 需要頻繁更新 JSON 部分數據


我們的情境

假設我們設計一個串流系統, 需要持續更新個人資料, 而我們的個人資料儲存格式為JSON, 那麼當使用者輸入姓名時會先更新姓名欄位, 接著輸入電話後更新電話欄位, 剩下的欄位依此類推, 就如同下圖一般:

raw-image


可以怎麼做呢?

我們可以使用 JSON.MERGE (Redis 7.2+) 這個功能, 它有以下的幾個特點:

  • 合併 JSON 物件(Object 合併)
    • 只有相同 key 的部分會被更新,沒有的 key 會被新增。
    • 不會刪除現有的 key。
  • 數組(Array)覆蓋: Array 會被直接替換,而不會合併。
  • 遞迴合併: 嵌套物件也可以合併。


基本語法:

JSON.MERGE <key> <path> <json>



就讓我們從基本的合併開始吧!


📌 假設原本的 JSON

JSON.SET user:1 $ '{"name": "Alice", "age": 25, "skills": {"programming": "Python"}}'


📌 執行 JSON.MERGE

JSON.MERGE user:1 $ '{"city": "Taipei", "skills": {"database": "Redis"}}'


📌 查詢合併後的結果

JSON.GET user:1
{"name": "Alice", "age": 25, "city": "Taipei", "skills": {"programming": "Python", "database": "Redis"}}

結語

不只要快! 還要更快的時代來臨了, 這樣的系統架構之下少不了串流的技術, 而串流除了傳輸上的渠道之外, 更重要的是儲存媒介是否支援這樣的串流功能, Redis扮演快取伺服器的角色, 正是串流中繼站最佳的角色, 就讓我們持續學習串流相關的技術與技巧吧! 歡迎訂閱我們的頻道, 讓我們一起學習共同成長吧!

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
140會員
306內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/05/07
有時候我們的API會處理運算功能, 因此會設計為多機來進行分散運算的作業, 但問題來了! 假設我們設計一個修改的API, 修改某個值, 但其它機器的API究竟要如何知曉並更新值呢? 這時候就需要來個通知與訂閱 我們在佇列系列主題有提到Queue的概念, 歡迎參考一下, 這會與我們的通知訂
Thumbnail
2025/05/07
有時候我們的API會處理運算功能, 因此會設計為多機來進行分散運算的作業, 但問題來了! 假設我們設計一個修改的API, 修改某個值, 但其它機器的API究竟要如何知曉並更新值呢? 這時候就需要來個通知與訂閱 我們在佇列系列主題有提到Queue的概念, 歡迎參考一下, 這會與我們的通知訂
Thumbnail
2025/04/09
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」 分享如何使用Docker架設Redis, 在進入此篇章之前也請您親自架設一遍, 這樣才能加深學習的效果, 接下來我們會使用Python這套程式語言進行示範與說明, 讓我們以實戰的方式來練習, 將技術內化為知識, 達到真
Thumbnail
2025/04/09
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」 分享如何使用Docker架設Redis, 在進入此篇章之前也請您親自架設一遍, 這樣才能加深學習的效果, 接下來我們會使用Python這套程式語言進行示範與說明, 讓我們以實戰的方式來練習, 將技術內化為知識, 達到真
Thumbnail
2025/04/07
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」有介紹關於Redis的基本概念, 相信對於快取伺服器也具備一定的概念了, 而在「【⚡ Cache伺服器 - Redis】使用pub/sub來完成通知訂閱機制」也提到了如何設計pub/sub機制來完成通知與訂閱, 但某些情
Thumbnail
2025/04/07
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」有介紹關於Redis的基本概念, 相信對於快取伺服器也具備一定的概念了, 而在「【⚡ Cache伺服器 - Redis】使用pub/sub來完成通知訂閱機制」也提到了如何設計pub/sub機制來完成通知與訂閱, 但某些情
Thumbnail
看更多
你可能也想看
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
Thumbnail
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
Thumbnail
※ 靜態資源回傳 ※ 什麼是靜態資源: 定義:是指事先準備好的資源,這些資源在伺服器上是靜態的、不會隨著每個請求而改變。 資源通常包括: 靜態 HTML 文件。 CSS。 圖像(Image)。 Video。 字體文件:google fonts。 favicon:網頁名稱旁邊的ico
Thumbnail
※ 靜態資源回傳 ※ 什麼是靜態資源: 定義:是指事先準備好的資源,這些資源在伺服器上是靜態的、不會隨著每個請求而改變。 資源通常包括: 靜態 HTML 文件。 CSS。 圖像(Image)。 Video。 字體文件:google fonts。 favicon:網頁名稱旁邊的ico
Thumbnail
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
Thumbnail
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
Thumbnail
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News