關於Redis的特點和使用場景

2022-06-25 12:54:12 字數 1336 閱讀 4741

redis是常用的非關係型資料庫。

非關係型資料庫基於鍵值對儲存,資料之間沒有聯絡,查詢效率高

【redis特點】

讀寫效能優異

持久化資料型別豐富

單執行緒資料自動過期

發布訂閱

分布式【redis的資料型別】

string——適合最簡單的k-v儲存,類似於memcached的儲存結構,簡訊驗證碼,配置資訊等,就用這種型別來儲存。

hash——一般key為id或者唯一標示,value對應的就是詳情了。如商品詳情,個人資訊詳情,新聞詳情等。

list——因為list是有序的,比較適合儲存一些有序且資料相對固定的資料。如省市區表、字典表等。因為list是有序的,適合根據寫入的時間來排序,如:最新的***,訊息佇列等。

set——可以簡單的理解為id-list的模式,如微博中乙個人有哪些好友,set最牛的地方在於,可以對兩個set提供交集、並集、差集操作。例如:查詢兩個人共同的好友等。

sorted set——是set的增強版本,增加了乙個score引數,自動會根據score的值進行排序。比較適合類似於top 10等不根據插入的時間來排序的資料。

【使用redis做快取的問題及解決方案】

一般快取思路:

1.快取穿透

快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求。這時的使用者很可能是攻擊者,攻擊會導致資料庫壓力過大。

[解決方案]

1.介面層增加校驗,如使用者鑑權校驗,id做基礎校驗,id<=0的直接攔截;

2.從快取取不到的資料,在資料庫中也沒有取到,這時也可以將key-value對寫為key-null,快取有效時間可以設定短點,如30秒(設定太長會導致正常情況也沒法使用)。這樣可以防止攻擊使用者反覆用同乙個id暴力攻擊

2.快取擊穿

快取擊穿是指快取中沒有但資料庫中有的資料(一般是快取時間到期),這時由於併發使用者特別多,同時讀快取沒讀到資料,又同時去資料庫去取資料,引起資料庫壓力瞬間增大,造成過大壓力

[解決方案]

1.設定熱點資料永遠不過期。

2.加互斥鎖,

3.快取雪崩

快取雪崩是指快取中資料大批量到過期時間,而查詢資料量巨大,引起資料庫壓力過大甚至down機。和快取擊穿不同的是, 快取擊穿指併發查同一條資料,快取雪崩是不同資料都過期了,很多資料都查不到從而查資料庫。

[解決方案]

1.快取資料的過期時間設定隨機,防止同一時間大量資料過期現象發生。

2.如果快取資料庫是分布式部署,將熱點資料均勻分布在不同快取資料庫中。

3.設定熱點資料永遠不過期。

什麼是Redis及特點和使用場景

什麼是redis redis是由義大利人salvatore sanfilippo 網名 antirez 開發的一款記憶體快取記憶體資料庫。redis全稱為 remote dictionary server 遠端資料服務 該軟體使用c語言編寫,redis是乙個key value儲存系統,它支援豐富的資...

redis使用場景

最近要去面試php程式設計師,去各家招聘 看看,都要有redis方面的知識儲備。這裡寫一篇部落格,就當是對最近學習redis的一次回顧。簡單一句話介紹redis 基於記憶體的高效的key value資料庫,把資料載入到記憶體中進行處理,定期把資料儲存到硬碟進行儲存,單執行緒。redis五大資料型別 ...

redis使用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在寫龐大的sql上了,而是利用redis靈活多變的資料結構和資料操作來實現。redis常用資料型別 redis最為常用的資料型別主要有以下五種 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 ...