Redis原始碼學習之 Tcp Socket封裝

2021-06-13 03:33:28 字數 488 閱讀 7255

anet.h anet.c

主要包含以下幾個封裝函式(這裡僅介紹關於tcp socket的封裝函式)

anettcpconnect:建立socket並呼叫底層的connect進行連線。

anettcpnonblockconnect:和anettcpconnect功能類似,但是設定連線的socket為非阻塞的。

anetread:呼叫底層的read對socket中的內容進行讀取。

anetwrite:呼叫底層的write向socket寫入內容。

anettcpserver:建立監聽socket,並呼叫bind和listen啟動伺服器開始監聽埠。

anettcpaccept:呼叫accept,接收客戶端的連線。

當然還有其他的輔助的函式,像是anetresolve解析位址,以及設定socket屬性的一些函式如anetnonblock anettcpnodelay anettcpkeepalive anetpeertostring等。

Redis 原始碼學習之 Redis 事務Nosql

redis事務提供了一種將多個命令請求打包,然後一次性 按照順序地執行多個命令的機制,並且在事務執行的期間,伺服器不會中斷事務而去執行其他不在事務中的命令請求,它會把事務中所有的命令都執行完畢才會去執行其他的命令。howredis中提供了multi discard exec watch unwatc...

redis原始碼學習之跳躍表

跳躍表對於我來說是乙個比較陌生的資料結構,因此花了一上午的時間先看了一蛤mit的公開課。網易雲課堂 mit跳躍表 什麼是跳躍表,有乙個很簡單的例子,有些地方的火車站跟高鐵站是同乙個站,有的地方只有火車站 假設現在的線路是a b c d e。其中a和c剛剛說的高鐵和火車站在一塊,其他的只有火車站,考慮...

redis原始碼學習之整數集合

intset的底層實現比較簡單,因為它所有的key都是整型,只是整型分為16bits 32bits和64bits這三種型別,當新插入的元素比當前集合中所有數還要長時,就要進行公升級了,這部分原始碼很簡單,主要就是公升級部分。intset 的編碼方式 define intset enc int16 s...