redis學習 補充學習

2021-10-07 11:10:21 字數 1352 閱讀 4173

redis是乙個開源的記憶體中的資料結構儲存系統,它可以用作:資料庫快取訊息中介軟體

是乙個完全開源免費的key-value記憶體資料庫通常被認為是乙個資料結構伺服器,主要是因為其有著豐富的資料結構strings、map、 list、sets、 sorted sets
1、完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o(1);

2、資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的;

3、採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多程序或者多執行緒導致的切換而消耗 cpu,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗;

4、使用多路i/o復用模型非阻塞io

5、使用底層模型不同,它們之間底層實現方式以及與客戶端之間通訊的應用協議不一樣,redis直接自己構建了vm 機制 ,因為一般的系統呼叫系統函式的話,會浪費一定的時間去移動和請求;

以上幾點都比較好理解,下邊我們針對多路 i/o 復用模型進行簡單的**:

(1)多路 i/o 復用模型

多路i/o復用模型是利用 select、poll、epoll 可以同時監察多個流的 i/o 事件的能力,在空閒的時候,會把當前執行緒阻塞掉,當有乙個或多個流有 i/o 事件時,就從阻塞態中喚醒,於是程式就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作。

這裡「多路」指的是多個網路連線,「復用」指的是復用同乙個執行緒。採用多路 i/o 復用技術可以讓單個執行緒高效的處理多個連線請求(儘量減少網路 io的時間消耗),且 redis 在記憶體中運算元據的速度非常快,也就是說記憶體內的操作不會成為影響redis效能的瓶頸,主要由以上幾點造就了 redis 具有很高的吞吐量。

(1)我們一直在強調的單執行緒,只是在處理我們的網路請求的時候只有乙個執行緒來處理,乙個正式的redis server執行的時候肯定是不止乙個執行緒的

(2)redis是用」單執行緒-多路復用io模型」來實現高效能的記憶體資料服務的,這種機制避免了使用鎖,但是同時這種機制在進行sunion之類的比較耗時的命令時會使redis的併發下降。

c 學習補充

1.在類的定義中,一般資料成員設為私有,函式成員設為共有。2.私有成員只能在類內使用,不能再類外,即宣告乙個物件後,不能用std.mame這種形式去呼叫私有成員,只能呼叫共有成員。3.我們知道建構函式是用來初始化資料成員的,但是有比他更好的,那就是初始化列表,他更快,更專業。4.類的定義就是封裝 5...

RNN LSTM GRU學習補充

隱藏層神經元個數的解釋 每乙個小黃框代表乙個前饋網路層,對,就是經典的神經網路的結構,num units就是這個層的隱藏神經元個數 例如128,256 雙向 lstm 我今天不舒服,我打算 一天。只根據 不舒服 可能推出我打算 去醫院 睡覺 請假 等等,但如果加上後面的 一天 能選擇的範圍就變小了,...

oracle學習 實時補充

1.建立表,將test 1中的列資料儲存到test 2中 務必不能少了as create table test 2 as select id,name,password from test 1 2.乙個列別名既能用在select子句也能用在order by子句中。不能在where子句中使用列別名 如...