學習淘淘商城第六十五課(查詢商品詳情新增快取分析)

2021-08-01 02:45:34 字數 2112 閱讀 4453

上節課我們一起學習了商品詳情展示,這節課我們一起學習下如何新增快取。

redis儲存資訊有兩種方式,一種是雜湊方式,這種儲存方式的好處是可以將快取資訊分類儲存,比如在前面我們在首頁展示的時候,頁面上的商品都是分類展示的,為了區分要快取的是首頁的資訊,因此設定雜湊的key是index_content,首頁大廣告位的分類id是89,因此89作為第二個引數(key),value則是首頁大廣告位的所有商品資訊。如下圖所示。

另一種儲存方式是string儲存方式,也就是普通的key-value形式,如下圖所示。

雜湊儲存方式適合做快取處理但是它卻不適合設定快取過期時間,這是因為它不支援具體到每個field進行設定過期時間,比如上面提到的首頁展示時儲存的key(index_content),redis僅支援對hash的key設定過期時間,這也就意味著如果我們設定的index_content這個key到期後,首頁所有的商品的快取資訊都將消失,這顯然是不合理的,我們想要的是針對每個商品設定過期時間,因此設定過期時間的話,hash儲存不合適。string儲存是比較適合的,那麼問題又來了,string儲存時key是容易重複的,怎麼來避免key衝突呢?我們可以通過新增字首、字尾的方式對redis的key進行分類,如下圖所示。既然是要儲存商品詳情,就在商品id前面起個名字,就叫做item_info(大家可以隨便起),在id的後面新增字尾base(代表是基本資訊),desc(代表是商品描述資訊)

上圖操作步驟如下:

redis:0>set item_info:1235:base aaaaa

okredis:0>set item_info:1235:desc ccccc

okredis:0>get item_info:1235:base

aaaaa

redis:0>get item_info:1235:desc

ccccc

redis:0>

這樣我們既可以區分key還可以針對每個商品設定過期時間,但是現在又有個問題來了,我們怎樣儲存二維表(就是我們**的資料,**有行和列,這就是二維表)資訊?我們以user表為例,如下圖所示,我們怎麼把這張表中的資料進行儲存呢?

我們可以按"表名:id:列名"來表示,如下圖所示。

操作命令如下

redis:0>set tb_user:7:id 7

okredis:0>set tb_user:7:username zhangsan

okredis:0>set tb_user:7:password e10adc3949ba59abbe56e057f20f883e

okredis:0>get tb_user:7:id

7redis:0>get tb_user:7:username

zhangsan

redis:0>get tb_user:7:password

e10adc3949ba59abbe56e057f20f883e

redis:0>

我們可以設定過期時間,比如給tb_user:7:id設定過期時間為100秒。這樣每次檢視tb_user:7:id時都可以看到ttl剩餘秒數在減少直到減到0,然後就過期了。

過期後檢視剩餘時間,查到的值是-2,如下所示。

redis:0>ttl tb_user:7:id

-2

我們便可以通過這種方式來新增商品詳情快取以及提高快取的利用效率。

第六十五周學習生活總結

剛剛章老師又給我們 聊 了一堂課,今天晚上的主題是關於如何在實際中運用前天晚上給我們講的道理的。先記一下今晚收貨到的很重要的四句話吧 環境,思想,態度,性格 做事要從這四個方面,四個順序考慮,至於需求,是做的手段。前天晚上章老師講到了需求,那天晚上我聽的很認真,但是要說我是否理解了,我也不能說我已經...

leetcode 簡單 第六十五題 2的冪

給定乙個整數n,判斷它是否為2的次方冪。方法 2,4,8都是2的n次冪 任何整數乘以2,都相當於向左移動了一位,而2的0次冪為1,所以2的n次冪就是1向左移動n位。這樣,2的冪的特徵就是二進位制表示只有最高位為1,其他位均為0。二進位製標下形式為 10 100 1000 減1後與自身進行按位與,如果...

名詞解釋第六十五講 場外交易

這裡是王團長區塊鏈學院,與最優秀的區塊鏈人一起成長!今天給大家講講場外交易 otc。otc over the counter 中文 櫃檯交易 或 場外交易 很多平台又叫c2c交易或法幣交易。都是指個人之間的數字貨幣和法幣交易。法幣購買btc,eth,eos,賣出btc,eth,eos換取法幣都要通過...