1. 程式人生 > 其它 >redis基本特徵

redis基本特徵


title: redis基本特徵
date: 2018/6/23 10:12:55
tags: [redis]
categories:

  • 開發
  • 資料庫

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

常見的資料結構型別,如字串(Strings),雜湊(Hash),列表(List),集合(Set),有序集合(ZSet)

Redis 內建了複製(Replication),LUA指令碼(Lua scripting), LRU驅動事件(LRU eviction),事務(Transactions) 和不同級別的磁碟持久化(Persistence),並通過 Redis哨兵(Sentinel)和叢集(Cluster)提供高可用性(High Availability)。

特點

  • 絕大部分請求是純粹的記憶體操作,非常快速

  • 資料結構簡單,利用操作

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

    • 這裡我們一直在強調的單執行緒,只是在處理我們的網路請求的時候只有一個執行緒來處理
    • 一個正式的Redis Server執行的時候肯定是不止一個執行緒的,例如Redis進行持久化的時候會以子執行緒的方式執行 (aof重寫用到子程序)
  • 使用多路I/O複用模型,非阻塞IO;

    • 這裡“多路”指的是多個網路連線,“複用”指的是複用同一個執行緒。採用多路 I/O 複用技術可以讓單個執行緒高效的處理多個連線請求(儘量減少網路 IO 的時間消耗),且 Redis 在記憶體中操作資料的速度非常快
  • 自定義了通訊的應用協議 RESP --> socket

    • 用sockerserver監聽jedis傳送的命令資料如下:

      第1行 *3 代表後面的指令資料有3組 SET KEY VALUE

    *3
    $3
    SET
    $6
    wesley
    $4
    2018
    
    • 如果我們能把模擬符合【RESP協議的程式碼指令】傳送給redis ,也能操作redis 。

    我們也能用Fiddler 抓包,看看jedis是怎麼傳送指令的

  • 由於是單執行緒模型,Redis 更喜歡大快取快速 CPU, 而不是多核

  • 二八定律:指網站訪問資料的特點是:80%的業務訪問集中在20%的資料上。這時為了減輕資料的壓力和提高網站的資料訪問速度,則可以使用快取機制來優化網站