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最為常用的資料型別主要有以下五種 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 ...