目前是金融相關的全端工程師,工作中沒用過 Redis,也沒真正遇過高併發,但我對「活動開始的瞬間湧入幾十萬人的系統怎麼活下來」很好奇。這 30 天,我會從零學 Redis,用電商場景當練習題:從資料型別、持久化、叢集,一路走到快取三災、分散式鎖與秒殺防超賣。沒有高併發環境,那就用壓測自己造一個,親眼看超賣發生,再用 Redis 修好它。這是一份從零開始的自學筆記。
自我介紹 目前是金融相關乙方的全端工程師,工作內容大多是 CRUD,還有處理各種複雜的邏輯需求。 流量很好預測,平常不太會遇到高流量或高併發,頂多就是多筆送審的...
啟動 Redis 用 Docker,很方便: # docker-compose.yml services: redis: image: redis:...
先看數字 環境架好了,先跑內建的壓測工具,有數字再談原理: docker exec redis30days redis-benchmark -t set,get...
常用指令 String 是最單純的型別,一個 key 對一個值。 SET key value GET key MGET key ...(一次取多個)...
購物車是存什麼 一個使用者對到多個「商品 + 數量」,最常做的動作是「某一項 +1」。 按照 Day 4 的做法,整包存成 JSON: SET cart:01...
常用指令 List 是一串有順序的字串,兩頭都可以推,也都可以拿。 LPUSH key value ...(從左邊推進去,回傳推完的長度)| p2 p1 p...
常用指令 Set 是一堆不重複的字串,沒有順序。 SADD key member ...(加進去,回傳真的加進去幾個,重複的算 0) SMEMBERS...
常用指令 Sorted Set 就是 Set 再加一個分數,Redis 會按照分數自己排好。 ZADD key score member ...(加進去,回...
前面幾天的型別都是「存什麼就有什麼」,要準確答案就得把資料整包留著。今天這兩個反過來,用很小的記憶體換一個夠用的答案。 常用指令 Bitmap 不是新型別,底層...
Day 6 拿 List 當 Queue,最後列了三個缺點:沒有 ACK、沒有重試、沒有消費者群組。今天的 Stream 三個都有,一個一個來看。 常用指令 S...