redis基本特徵
阿新 • • 發佈:2021-06-27
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%的資料上。這時為了減輕資料的壓力和提高網站的資料訪問速度,則可以使用快取機制來優化網站