案例場景
某大型綜合類電商平臺擁有龐大的用戶群體,且每逢節(jié)假日期間會迎來訂單量的爆發(fā)式增長。訂單處理系統(tǒng)需要快速響應大量的并發(fā)請求,并在短時間內(nèi)完成訂單創(chuàng)建、庫存扣減、支付驗證等操作。由于訂單數(shù)據(jù)量大且操作頻繁,傳統(tǒng)的關系型數(shù)據(jù)庫難以滿足性能要求。公司擬引入 Redis作為訂單處理系統(tǒng)的一部分,利用其高性能的key-value存儲和內(nèi)存操作優(yōu)勢,將訂單號、用戶信息等關鍵數(shù)據(jù)緩存到Redis 中。并通過 Redis的自身機制,將訂單數(shù)據(jù)分布到多個Redis 節(jié)點,實現(xiàn)負載均衡和數(shù)據(jù)冗余。同時,利用Redis 的原子操作和事務特性,確保訂單處理過程中的數(shù)據(jù)一致性和完整性。
問題內(nèi)容:
[問題1]
(8分)
Redis 數(shù)據(jù)分片方案有多種,請根據(jù)分片方案的特點填寫以下表格內(nèi)容。

在系統(tǒng)設計方案討論時,王工提出除了以上兩種方案,還有一種分片方案,此方案不但能讓 redis 各結點負載相當,且從長久來說,更利于擴展Redis結點,請指出王工的分片方案,并說明該方案為何更利于擴展結點。
[問題2] (6分)
Redis 支持多種數(shù)據(jù)類型,請為以下應用場景選擇最合適的Redis數(shù)據(jù)類型。
(1)網(wǎng)站用戶畫像標簽。
(2)多用戶同時下訂單,扣減庫存時的分布式鎖。
(3)商品銷售周排行榜。
[問題3](6分)
Redis 緩存區(qū)容量有限,當緩存空間不足時,則需要淘汰緩存區(qū)中的部分數(shù)據(jù)。
volatile-lru 和 allkeys-lru 兩種算法有共性,即均遵循(1)原理,優(yōu)先淘汰(2)的數(shù)據(jù)。同時,他們也有差異,差異在于volatile淘汰數(shù)據(jù)時的范圍限定為僅針對(3)。
[問題4](5分)
布隆過濾器可以解決Redis應用中的什么問題?用這種方法,會有什么缺點?
試題答案:
[問題1] (8分,(a)-(d)每空1分,后面每問2分)
(a) 取值范圍(b)不均勻 (c) 哈希值(d) 均勻
王工的分片方案為:一致性哈希。
該方案通過哈希環(huán)機制,增設了很多虛擬結點,再映射到物理結點,所以擴展結點時,不必像哈希分片那樣對所有數(shù)據(jù)重新分配結點。只需要將部分數(shù)據(jù)做重新調(diào)整。
[問題 2] (6分,每空2分)
(1) Set (2) String (3) Zset
[問題 3] (6分,每空2分)
(1) 局部性原理(2)最近未被訪問(3)設置了過期時間的數(shù)據(jù)
[問題4] (5分,第1問2分,第2問每條1分)
布隆過濾器可用于解決緩存穿透的問題。
其缺點包括:
1、有一定的誤判率,即存在假陽性,不能準確判斷元素是否在集合中。
2、一般情況下不能從布隆過濾器中刪除元素
3、不能獲取元素本身
軟考備考資料免費領取
去領取
專注在線職業(yè)教育25年