Redis5設計與源碼分析讀后感(一)認識Redis


一、初識redis

定義

  Redis是一個開源的Key-Value數據庫,通常被稱為數據結構服務器,其值可以是多種常見的數據格式,且讀寫性能極高,且所有操作都是原子性的

高性能的主要原因

  • 1、基於內存存儲,命令幾乎都是操作內存,內存的讀寫速度非常快。
  • 2、單線程處理網絡請求,避免不必要的上下文切換,同時不存在加鎖/釋放鎖等同步操作。【PS:正在運行的redis server肯定不止一個線程,但只有一個線程來處理網絡請求】
  • 3、使用多路I/O復用模型(select、poll、epoll),可以高效處理大量並發連接。
  • 4、數據結構專門設計,CRUD操作相對簡單。

二、安裝Redis

  由於我們使用redis的場景一般是安裝在服務器上的,所以這里以linux環境為例子進行安裝:

#1、下載源碼包 wget http://download.redis.io/releases/redis-5.0.0.tar.gz
 #2、解壓源碼包 tar -zxvf redis-5.0.0.tar.gz

#3、進入安裝目錄
cd redis-5.0.0 #4、編譯【從Makefile中讀取指令,然后編譯】 make #5、進入源碼目錄
cd src

#6、安裝【從Makefile中讀取指令,然后安裝到指定的位置】 make install

  安裝完成后進入/usr/local/bin目錄中可以看到生成了一些可執行文件

  • redis-benchmark:官方自帶的redis性能測試工具
  • redis-check-aof:修復語法錯誤的AOF文件
  • redis-check-rdb:修復語法錯誤的RDB文件
  • redis-cli:客戶端命令行工具【redis-cli -h {host} -p {port} 鏈接到指定的redis服務器】
  • redis-sentinel:哨兵啟動程序
  • redis-server:服務端啟動程序

配置redis

  安裝完成后,redis默認是本機連接的形式,外網無法訪問,我們需要改一下配置文件:

 

  修改完文件以后我們直接輸入以下命令重啟Redis服務器:

#使用對應的配置文件來啟動Redis服務器【這里我們是進入了src目錄里面去執行redis-server,而不是直接使用安裝好以后在/usr/local/bin目錄下的快捷命令】 #PS:../redis.conf表示使用此配置文件進行啟動 #PS:&表示后台啟動,跳出后不關閉程序

redis-server ../redis.conf &

三、Redis源碼結構

   redis源碼主要放在安裝目錄下的src目錄里面:

   核心部分如下:

(1)基本數據結構

  • 動態字符串 :sds.c
  • 整數集合 :intset.c
  • 壓縮列表 :ziplist.c
  • 快速鏈表 :quicklist.c
  • 字典 :dict.c
  • Streams :底層實現結構為listpack.c和rax.c

(2)Redis數據類型的底層實現

  • redis對象 :object.c
  • 字符串 : t_string.c
  • 列表 :t_list.c
  • 字典 :t_hash.c
  • 集合及有序集合 :t_set.c 和 t_zset.c
  • 數據流 :t_stream.c

(3)Redis數據庫的實現

  • 數據庫的底層實現 :db.c
  • 持久化 :rdb.c 和 aof.c

(4)Redis服務端和客戶端實現

  • 事件驅動 :ae.c 和 ae_epoll.c
  • 網絡連接 :anet.c 和 networking.c
  • 服務端程序 :server.c
  • 客戶端程序 :redis-cli.c

(5)其它

  • 主從復制 :replication.c
  • 哨兵 :sentinel.c
  • 集群 :cluster.c
  • 其他數據結構 :hyperloglog.c 、 geo.c 等
  • 其他功能 :pub/sub 【發布/訂閱】、 Lua腳本等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM