ref: https://vivek-singh.medium.com/system-design-cheat-sheet-318ba2e34723
本篇文章是一個筆記文,紀錄關於 System Design 路上常遇到的架構與元件,譬如
1. LoadBalancer
2. Caches
3. Queues
4. Configuration Service
5. API Gateway
6. Service Mesh
7. CDN
8. Cassandra
9. Snowflake
10. Numbers
每個概念都還會附上一些相關影片與文章,也因為是個筆記內容,因此每個元件的介紹都不會非常詳細,都是小小段落介紹每個元件的最基本概念。
譬如 LoadBalancer 的筆記有
1. L4/L7 兩種的差異
2. AWS 上 ELB/ALB/NLB 的三種差異
3. LB 的演算法, Round Robin,Weighted RR, Least Connection/Response Time/Resource based 等
Caches
1. 實作有 Memcached, Redis 等相關專案
2. 什麼時候會使用 Memcached:
a. 需求簡單,譬如單純 Key/Value 字串,可以輕易地透過調整 cores/threads 來調整效能。
b. Volatile,沒有儲存機制
c. 只有 LRU 的 Cache 演算法
d. Key 最多 250B, Value 最多 1MB
3. 什麼時候使用 Redis
a. 需要儲存 object,而非單純 string
b. 支援多種演算法
c. 支援 data store,可以達到 non-volatile 效果
d. 可以支援 Set/Hash/List/Sorted Set 不同型態
這類型的文章對於踏入 System Design 能夠提供一個簡易的入門介紹,先有哪些類別需要學習,再針對每個類別獨立學習也是一個不錯的學習路徑。
「redis sorted set」的推薦目錄:
- 關於redis sorted set 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於redis sorted set 在 Kewang 的資訊進化論 Facebook 的最佳解答
- 關於redis sorted set 在 redis get top 5 from 2 sorted set - Stack Overflow 的評價
- 關於redis sorted set 在 JavaScript implementation of Redis' Sorted Set - GitHub 的評價
- 關於redis sorted set 在 redis基本数据类型(五)sorted-sets常用指令 - 阿坤- 的評價
redis sorted set 在 Kewang 的資訊進化論 Facebook 的最佳解答
Autocomplete 在現在的應用程式已經是個不可或缺的功能,但這個功能因為要一直發 request 到 server 上,簡直就是 DDoS 了 XDDD,對 server 是個不小的負擔。一方面要讓功能正常快速的運作,一方面又要讓 server 不會被打掛,是個不容易做的好的功能。這篇就來分享一下 Redis 的作者 antirez 是如何運用 Redis 來達到這個功能。
Redis 是一個 in-memory database,讀寫的效率自然不在話下,做 Autocomplete 用這類資料庫是再正常不過了。Redis 裡面有個資料結構叫做 Sorted Set,只要塞資料 (ZADD) 進去,它就會幫你按照字母順序排列好。所以小編只要把要搜尋的資料 (這裡小編稱為 candidate) 分割成獨立的字元 (這裡小編稱為 keyword),存進 Sorted Set 就可以完成初步的資料處理。
比如想要找到 Taiwan 這個 candidate 的話就先把 Taiwan 拆成 t, ta, tai, taiw, taiwa, taiwan,把這六個 keyword 都存入 Sorted Set 裡面。最後再存入 taiwan*,表示這個 candidate 的結尾。所以 Sorted Set 的內容會變成下面這樣:
---
1. t
2. ta
3. tai
4. taip
5. taipe
6. taipei
7. taipei*
8. taiw
9. taiwa
10. taiwan
11. taiwan*
12. tal
13. tall
14. tall*
---
當使用者輸入 t,發送請求到 server 的時候,server 用 Redis 的搜尋指令 (ZRANK) 找出 index 為 1,然後再從 1 開始,將資料取回來 (ZRANGE) 50 筆,所以上面的 14 筆資料都會取回來。最後 server 再把這 14 筆結尾有 * 的資料過濾出來,剩下 7, 11, 14 這三筆,再把 * 濾掉回給使用者就完成這個功能了。
所以使用者輸入了 t,server 就會回給使用者 taipei, taiwan, tall 這三個 candidate,這就完成最簡單的 Autocomplete 功能。但 Autocomplete 可不只有這樣而已,剩下的細節等下次有空再來分享一下好了。
#funliday #autocomplete #redis
redis sorted set 在 JavaScript implementation of Redis' Sorted Set - GitHub 的推薦與評價
A JavaScript implementation of Redis' Sorted Sets. Keeps a set of keys in order based on their score. Uses skip lists under the hood, like Redis does. ... <看更多>
redis sorted set 在 redis基本数据类型(五)sorted-sets常用指令 - 阿坤- 的推薦與評價
它们之间主要的差别是Sorted-Sets中没一个成员都有一个score一直关联,redis通过分数为集合中的成员进行从小到大排序,成员必须唯一,但是score可以 ... ... <看更多>
redis sorted set 在 redis get top 5 from 2 sorted set - Stack Overflow 的推薦與評價
... <看更多>