簡單認識Redis

2021-10-03 07:39:50 字數 1319 閱讀 5023

redis是乙個非關係型資料庫,可以在某些場合對關係型資料庫進行乙個很好的補充

1、string:這個其實沒啥好說的,最常規的set/get操作,value可以是string也可以是數字。一般做一些複雜的計數功能的快取

2、list::list的資料結構底層不是陣列而是鍊錶,可以做簡單的訊息佇列的功能。另外還有乙個就是,可以利用lrange命令,做基於redis的分頁功能,效能極佳,使用者體驗好。

3、hash:hash存的是字串和字串值之間的對映,比如乙個使用者要儲存其全名、姓氏、年齡等等,就很適合使用雜湊,比較方便的就是操作其中的某個字段。

4、set:set堆放的是一堆不重複值的集合。所以可以做全域性去重的功能。為什麼不用jvm自帶的set進行去重?因為我們的系統一般都是集群部署,使用jvm自帶的set,比較麻煩,難道為了乙個做乙個全域性去重,再起乙個公共服務,太麻煩了。

5、sorted set:sorted set多了乙個權重引數score,集合中的元素能夠按score進行排列。可以做排行榜應用,取top n操作。

1、純記憶體操作

2、單執行緒操作,避免頻繁的上下文切換

3、採用了非阻塞i/o多路復用機制(i/o多復路就是有單個執行緒,通過跟蹤每個i/o流的狀態,來管理多個i/o流)

1、快取和資料庫雙寫一致性

解釋:加入快取後,快取中有資料就不會從資料庫中讀取可,如果不保證快取和資料庫中資料一致,就會導致請求來的資料不是罪行的。

解決方案:編寫刪除快取的介面,在更新資料庫的同時,呼叫刪除快取的介面刪除快取總的資料。

使用訊息佇列

使用定時任務

2、快取雪崩

解釋:指同一時間快取大面積失效,這時候又來了一波請求,導致所有的請求都懟在資料庫上,導致資料庫連線異常。

解決方案:給快取失效加上乙個隨機值,避免集體失效。搭建redis集群或者是使用互斥鎖。

3、快取穿透

解釋:及刻意去請求資料庫中不存在的時間,導致所有請求都,導致資料庫壓力過大

解決方案:採用非同步更新策略,無論key是否取到值,都直接返回,value值中維護乙個快取失效時間,快取如果過期,非同步起乙個執行緒去讀資料庫,更新快取

4、快取擊穿

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

解決方案:互斥鎖

1、rdb:簡而言之,就是在不同的時間點,將rdis的資料做為快照進行儲存

缺點:資料可能不完整

2、aof:在redis的執行過程中,將命令全部記錄下來,在下次重啟的時候,將命令全部執行一次。

缺點:檔案體積大

aof方式恢復資料更加完整

初步認識redis

1.什麼redis 2.為什麼使用redis 3.什麼場合使用redis 4.redis的好處 5.編譯安裝redis 6.redis資料結構 1.什麼是redis redis是remote dictionary server 遠端資料服務 的縮寫,是義大利人antirez開發的一款記憶體快取記憶體...

redis學習 1 認識redis

redis是一種基於鍵值對的nosql資料庫,與其他多鍵值對資料庫不同的是,redis的值支援資料型別,redis中的值可以是string 字串 hash 雜湊 list 列表 set 集合 zset 有序集合 等多種資料結構。redis的特點 1.高效能 redis將資料儲存在記憶體中的,所以它的...

this簡單認識

this 在函式中簡單的說,this的指向存在於函式呼叫的時候決定的,誰呼叫了這函式 函式中的this就指向誰 例如 1 普通的呼叫函式的時候 fn window2 物件呼叫 var obj obj.f fn obj.f this obj3 定時器呼叫 因為fn不是我們自己手寫 呼叫的 底層是win...