Redis系列之初識入門

2021-10-01 21:10:03 字數 2304 閱讀 6869

redis,乙個完全免費開源的快取軟體,它是使用c語言編寫,基於記憶體的高效能key-value資料庫。redis在網際網路儲存技術中得到非常廣泛的應用,它作為快取中介軟體,能夠解決網際網路應用中的一些技術瓶頸,且具有使用簡單,效能強悍,功能應用場景豐富的特點。

redis與memcache、mongodb一樣,都是以key-value方式儲存資料,但是redis有著更為豐富的資料結構去儲存資料。

redis支援的資料結構有多種,key最大512m。 

常用的五種:string、hash、list、set、sortedset。其他高階:bitmaps、hyperloglog、geo、stream

string

實現方式:string是最常用的一種資料型別,可以通過預分配冗餘空間的方式來減少記憶體的頻繁分配。普通的key/value儲存都可以歸為此類,value資料結構為string型別,當遇到incr、decr等操作時會轉成數值型進行計算。

場景:①快取。②計數器,利用incr和decr命令進行計數,且是原子操作,最終將結果落地到資料庫。③共享使用者session。

hash

實現方式:這種資料結構顯得比較單一了,value的資料結構類似於map,也就是將乙個物件的各個字段轉化為map的形式儲存在hash中,前提是這個物件沒有巢狀其他物件型別。

應用場景:①快取一些只有基本資料型別的物件

list

實現方式:list是按照插入順序的有序列表,list也是常有的資料結構,value使用的list,實際上是底層c語言實現了乙個雙向鍊錶,操作靈活,支援範圍查詢和頭進尾出等等。

set

實現方式:value儲存的是乙個set的資料結構,set具有去重的特點,其底層內部是實現了乙個key為null的hashmap,根據vlaue的hash值去重。

應用場景:①去重列表,當需要實現乙個去重的列表的時候可以寫進set自動就去重了。②利用去重機制實現交集並集差集,如兩個好友列表一起整個交集,兩個好友的共同好友就出來了。

sorted set

實現方式:內部使用hashmap和跳躍表(skiplist)來保證資料的儲存和有序,hashmap裡放的是成員到score的對映,而跳躍表裡存放的是所有的成員,排序依據是hashmap裡存的score,使用跳躍表的結構可以獲得比較高的查詢效率,並且在實現上比較簡單。sorted set是有序的且去重,通過維護乙個優先順序(score)引數來參與排序,當寫入資料的時候就排好序了,當需要實現有序且去重的列表的時候可以使用。

應用場景:①有序去重的列表,比如微博熱搜榜,就是有個後面的熱度值,前面就是名稱;twitter 的public timeline可以以發表時間作為score來儲存,這樣獲取時就是自動按時間排好序的。② 排行榜,按照哪方面進行排名就score儲存什麼資料。③帶權重的佇列,普通資訊權重是1,重要訊息權重是2,排好序讓任務執行。

其他高階資料結構

bitmaps

實現方式:bit陣列,底層維護了乙個bit型別的陣列,也就是說這個陣列的資料只有0或1。

應用場景:布隆過濾器

hyperloglog

應用場景:供不精確的去重計數功能,比較適合用來做大規模資料的去重統計,例如統計 uv;

geo

實現方式:寫入人或地方的經度和緯度,作位置距離計算或者根據半徑計算位置等。

應用場景:①顯示附近的人或地方

stream

實現方式:結構類似於mq的佇列,先進先出

應用場景:①儲存直播平台的互動聊天資訊

pub/sub

功能是訂閱發布,可用做簡單的訊息佇列

pipeline

批量處理命令,也就是在一次網路連線中批量處理命令,一次性返回全部結果,減少網路請求的開銷。需要注意的是pipeline中的命令並不是原子性執行的,也就是說管道中的命令到達redis伺服器的時候可能會被其他的命令穿插。

lua

redis支援lua指令碼,因此只要支援lua的第三方元件都可以使用redis,如nginx。同時對於分布式鎖也可以寫lua實現。

事務

redis提供的是不嚴格的事務,執行事務就是執行一串命令,當命令中有失敗的命令時,不會回滾,而是會繼續執行剩下的命令。

WebRTC入門學習之初識WebRTC

引言 先宣告本人只是小小實習生一枚,若有不正確的,希望大家幫忙指正。一 webrtc基本架構 二 w3c提供的webrtc api 英文api 個人建議看英文版 中文api 版 三個主要api rtcdatachannel 用以任意應用資料通訊 學習重點 offer answer狀態機變化和ice狀...

安卓入門之初識view

一.view檢視 1.textview 文字檢視 android layout width wrap content android layout height wrap content wrap content的優點 使檢視大小與內容的大小切合。文字大小 android textsize numb...

智慧型計算快速入門之初識

智慧型計算,也稱為計算智慧型,包括遺傳演算法 模擬退火演算法 禁忌搜尋演算法 進化演算法 啟發式演算法 蟻群演算法 人工魚群演算法,粒子群演算法 混合智慧型演算法 免疫演算法 人工智慧 神經網路 機器學習 生物計算 dna計算 量子計算 智慧型計算與優化 模糊邏輯 模式識別 知識發現 資料探勘等。所...