原创 gdb 調試工具 --- 使用方法淺析

gdb 調試工具使用方法淺析 1. 什麼是gdb gdb是GNU debugger的縮寫,是編程調試工具。 2. gdb的功能 啓動程序,可以按照用戶自定義的要求隨心所欲的運行程序。 可讓被調試的程序在用戶所指定的調試斷點處停住

原创 Redis源碼剖析和註釋(十五)---- 通知功能實現與實戰 (notify)

Redis 通知功能實現與實戰 1. 通知功能介紹 客戶端可以通過 訂閱與發佈功能(pub/sub)功能,來接收那些以某種方式改動了Redis數據集的事件。 目前Redis的訂閱與發佈功能採用的是發送即忘(fire and for

原创 Redis源碼剖析和註釋(十四)---- Redis 數據庫及相關命令實現(db)

Redis 數據庫及相關命令實現 1. 數據庫管理命令 數據庫管理的命令如下表格所示:redis keys命令詳解 命令 描述 FLUSHDB 清空當前數據庫的所有key FLUSHALL 清空整個Redis服務器

原创 Redis源碼剖析和註釋(二)--- 簡單動態字符串

Redis 簡單動態字符串 1.介紹 Redis兼容傳統的C語言字符串類型,但沒有直接使用C語言的傳統的字符串(以’\0’結尾的字符數組)表示,而是自己構建了一種名爲簡單動態字符串(simple dynamic string,SD

原创 Redis源碼剖析和註釋(四)--- 跳躍表(skiplist)

Redis 跳躍表(skiplist) 1. 跳躍表(skiplist)介紹 定義:跳躍表是一個有序鏈表,其中每個節點包含不定數量的鏈接,節點中的第i個鏈接構成的單向鏈表跳過含有少於i個鏈接的節點。 跳躍表支持平均O(logN)

原创 Redis源碼剖析和註釋(三)--- Redis 字典結構

Redis 字典結構 1. 介紹 字典又稱爲符號表(symbol table)、關聯數組(associative array)或映射(map),是一種用於保存鍵值對(key-value pair)的抽象數據結構。例如:redis中

原创 Redis源碼剖析和註釋(五)--- 整數集合(intset)

Redis 整數集合(intset) 1. 介紹 整數集合(intset)是集合鍵底層實現之一。集合鍵另一實現是值爲空的散列表(hash table),雖然使用散列表對集合的加入刪除元素,判斷元素是否存在等等操作時間複雜度爲O(1

原创 Redis源碼剖析和註釋(七)--- 快速列表(quicklist)

Redis 快速列表(quicklist) 1. 介紹 quicklist結構是在redis 3.2版本中新加的數據結構,用在列表的底層實現。 通過列表鍵查看一下:redis 列表鍵命令詳解 127.0.0.1:6379> RPU

原创 Redis源碼剖析和註釋(十一)--- 哈希鍵命令的實現(t_hash)

Redis 哈希鍵命令實現(t_hash) 1. 哈希命令介紹 Redis 所有哈希命令如下表所示:Redis 哈希命令詳解 序號 命令及描述 1 HDEL key field2 [field2]:刪除一個或多個哈希表

原创 Redis源碼剖析和註釋(十七)--- RDB持久化機制

Redis RDB持久化機制 1. RDB的介紹 因爲Redis是內存數據庫,因此將數據存儲在內存中,如果一旦服務器進程退出,服務器中的數據庫狀態就會消失不見,爲了解決這個問題,Redis提供了兩種持久化的機制:RDB和AOF。本

原创 Redis源碼剖析和註釋(八)--- 對象系統(redisObject)

Redis 對象系統 1. 介紹 redis中基於雙端鏈表、簡單動態字符串(sds)、字典、跳躍表、整數集合、壓縮列表、快速列表等等數據結構實現了一個對象系統,並且實現了5種不同的對象,每種對象都使用了至少一種前面的數據結構,優化

原创 Redis源碼剖析和註釋(十)--- 列表鍵命令實現(t_list)

Redis 列表類型命令實現(t_list) 1.列表類型命令介紹 redis中所有列表類型的命令如下:列表類型命令詳解 序號 命令及描述 1 BLPOP key1 [key2 ] timeout:移出並獲取列表的第一

原创 Redis源碼剖析和註釋(十二)--- 集合類型鍵實現(t_set)

Redis 集合類型鍵實現(t_set) 1. 集合命令介紹 redis中所有的集合命令如下:Redis集合命令詳解 序號 命令 說明 1 SADD key member1 [member2] 將一個或多個成員添加到集

原创 Redis源碼剖析和註釋(十九)--- Redis 事件處理實現

Redis 事件處理實現 1. Redis事件介紹 Redis服務器是一個事件驅動程序。下面先來簡單介紹什麼是事件驅動。 所謂事件驅動,就是當你輸入一條命令並且按下回車,然後消息被組裝成Redis協議的格式發送給Redis服務器,

原创 Redis源碼剖析和註釋(十八)--- Redis AOF持久化機制

Redis AOF持久化機制 1. AOF持久化介紹 Redis中支持RDB和AOF這兩種持久化機制,目的都是避免因進程退出,造成的數據丟失問題。 RDB持久化:把當前進程數據生成時間點快照(point-in-time snap