零、文章目錄
Redis01-基礎-入門
1、認識 NoSQL
- NoSQL 知識請參考:https://blog.csdn.net/liyou123456789/article/details/132612444
2、認識 Redis
(1)簡介
- Redis(Remote Dictionary Server,遠程字典服務)是一個開源的、基于內存的高性能鍵 - 值存儲數據庫。它由 Salvatore Sanfilippo 編寫,使用 ANSI C 語言開發。
- 官網地址:https://redis.io/
(2)特征
- 鍵值(key-value)型,value支持多種不同數據結構,功能豐富。
- 單線程,每個命令具備原子性
- 低延遲,速度快(基于內存、IO多路復用、良好的編碼)。
- 支持數據持久化
- 支持主從集群、哨兵、分片集群
(3)應用場景
- 緩存:可以緩存經常訪問的數據,如網頁內容、數據庫查詢結果等。例如,在一個電商網站中,商品的詳情頁面內容(如商品描述、圖片等)可以緩存在 Redis 中。當用戶訪問該商品頁面時,先從 Redis 中獲取數據,如果命中緩存,就直接返回,大大提高了訪問速度,減輕了后端數據庫的壓力。
- 消息隊列:利用 Redis 的列表數據結構可以實現簡單的消息隊列。生產者將消息添加到列表中,消費者從列表中獲取消息。例如,在一個日志收集系統中,各個服務器可以將日志消息發送到 Redis 的一個列表中,然后專門的日志處理服務器從該列表中獲取日志消息進行處理。
- 排行榜系統:有序集合非常適合用于構建排行榜。例如,在一個游戲應用中,玩家的分數作為有序集合成員的分數,玩家的標識作為成員。可以方便地獲取排名前 N 的玩家,或者某個玩家的排名等信息。
- 實時分析:可以存儲實時數據,如網站的訪問統計信息(每秒的訪問量、用戶來源等)。通過 Redis 的數據結構和操作,可以快速地對這些數據進行統計和分析。例如,使用 Redis 的計數器(字符串類型,通過 INCR 等命令)來統計每秒的訪問量,然后可以實時地展示在監控界面上。
- 分布式會話:在分布式系統中,可以使用 Redis 來存儲會話信息。例如,在一個微服務架構的 Web 應用中,各個微服務可以將用戶的會話數據(如用戶登錄狀態、購物車信息等)存儲在 Redis 中,這樣不同的微服務就可以共享會話數據,實現用戶的單點登錄和購物車等功能。
(4)優勢和局限性
- 優勢
- 速度極快 :如前面所述,基于內存存儲和高效的算法實現,使其在處理大量數據和高并發請求時表現出色。
- 數據結構靈活 :豐富的數據結構可以滿足多種不同的業務需求,方便地存儲和操作復雜的數據。
- 高可用性 :通過主從復制、哨兵系統和集群模式可以實現 Redis 的高可用。主從復制可以實現數據的備份和讀寫分離,哨兵可以監控主節點狀態并進行故障轉移,集群模式可以提供橫向擴展能力,提高系統的可用性和擴展性。
- 局限性
- 數據存儲容量受限 :由于數據存儲在內存中,所以存儲成本相對較高,對于大規模數據存儲可能會受到服務器內存大小的限制。
- 數據類型復雜度相對有限 :雖然 Redis 提供了多種數據類型,但對于一些非常復雜的數據結構和關系(如圖數據庫中的復雜關系),可能不是最佳選擇。
- 事務的局限性 :如前面提到的,Redis 的事務不是嚴格的事務,在遇到錯誤時不會自動回滾,這在一些對事務要求非常嚴格的應用場景中可能會帶來問題。
(5)主要版本說明
- Redis 2.6(2012年)
- 服務端支持 Lua 腳本,增強擴展能力;
- 鍵過期時間支持毫秒級精度;
- 新增位圖命令 BITCOUNT 和 BITOP;
- 優化客戶端連接數限制,支持更大規模并發;
- 重構核心代碼,為后續集群功能做準備。
- Redis 2.8(2013年)
- 主從復制優化,減少網絡問題引發的全量復制頻率;
- 支持 IPv6 和綁定多 IP 地址;
- 新增 CONFIG REWRITE 命令,持久化配置修改;
- Redis Sentinel(哨兵)第二版,實現生產級高可用;
- 引入 SET 指令擴展參數,解決分布式鎖原子性問題(如 SETNX + EXPIRE)。
- Redis 3.0(2015年)
- 正式推出 Redis Cluster(分布式集群),支持自動分片和故障轉移;
- 優化內存管理(如嵌入式字符串編碼、LRU 算法);
- 新增 MIGRATE 命令參數,加速鍵遷移;
- BITCOUNT 性能提升,支持高效位操作。
- Redis 3.2(2016年)
- 新增 GEO 模塊,支持地理位置計算(如 GEOADD、GEODIST);
- 引入 QUICKLIST 編碼,優化列表存儲結構;
- 支持無盤復制(Diskless Replication),降低主節點 I/O 壓力;
- 新增 HSTRLEN 命令,統計哈希字段值的長度。
- Redis 4.0(2017年)
- 支持 模塊系統,允許第三方擴展功能(如布隆過濾器);
- 新增 PSYNC 2.0,優化主從切換時的數據同步效率;
- 提供 MEMORY 命令,增強內存監控;
- 支持 RDB-AOF 混合持久化,兼顧性能與數據安全;
- 非阻塞 DEL 和 FLUSH 命令,避免大鍵刪除導致阻塞。
- Redis 5.0(2018年)
- 新增 Stream 數據類型,支持消息隊列場景;
- 優化 Redis Cluster 的運維能力(如副本遷移);
- 改進 CLIENT PAUSE 命令,增強客戶端管理。
- Redis 6.x 系列(2020年)
- 多線程 I/O:首次支持多線程處理網絡 I/O(非命令執行),顯著提升高并發場景性能。
- 客戶端緩存(Client-Side Caching):允許客戶端本地緩存部分數據,減少服務端請求壓力,支持廣播和鍵名跟蹤模式。
- ACL 權限控制增強:細粒度權限管理,支持按命令、鍵前綴等維度限制用戶訪問。
- SSL/TLS 加密通信:提供原生加密支持,增強數據傳輸安全性。
- RESP3 協議:新版本通信協議,優化客戶端與服務端交互效率,支持更多數據類型。
- Redis 7.x 系列(2022年)
- Function 特性:支持在服務端定義和執行自定義函數(類似存儲過程),減少客戶端與服務器交互次數。
- Multi-Part AOF:改進 AOF 持久化機制,支持分塊寫入,降低故障恢復時的數據丟失風險。
- Sharded Pub/Sub:集群模式下支持分片發布訂閱功能,提升分布式消息傳遞效率。
- 命令性能優化:如
SORT
命令支持更多參數,內存管理進一步優化。 - 動態線程數調整:允許運行時動態調整 I/O 線程數量,適應不同負載場景。
- 版本命名規則補充
- 穩定版本:第二位為偶數(如 2.6、3.0、4.0)。
- 開發版本:第二位為奇數(如 2.7、3.1),用于新功能測試
3、Windows 安裝 Redis
(1)下載
- windows 版本下載地址:https://github.com/MicrosoftArchive/redis/tags
- windows 版本沒有官方支持,我們用 3.2.100 這個最新版本
- 百度網盤下載地址:https://pan.baidu.com/s/1c0eMDGiWOHQzryhNzNXtwg?pwd=1234
(2)安裝
- 下載壓縮包綠色版本,解壓即安裝完成
(3)啟動
- 進入程序目錄,打開 cmd 命令行窗口
redis-server.exe[36876] 13 Feb 13:46:42.770 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf_.__.-``__ ''-.__.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit.-`` .-```. ```\/ _.,_ ''-._( ' , .-` | `, ) Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379| `-._ `._ / _.-' | PID: 36876`-._ `-._ `-./ _.-' _.-'|`-._`-._ `-.__.-' _.-'_.-'|| `-._`-._ _.-'_.-' | http://redis.io`-._ `-._`-.__.-'_.-' _.-'|`-._`-._ `-.__.-' _.-'_.-'|| `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-'`-._ `-.__.-' _.-'`-._ _.-'`-.__.-'[36876] 13 Feb 13:46:42.773 # Server started, Redis version 3.2.100
[36876] 13 Feb 13:46:42.774 * The server is now ready to accept connections on port 6379
(4)連接操作
- 進入程序目錄,打開 cmd 命令行窗口
redis-cli.exe
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
4、Centos7.9 安裝Redis7.4
(1)安裝依賴環境
- Redis 是用 C 語言編寫的,需要編譯環境,因此需要安裝
gcc
和tcl
:
sudo yum install -y gcc tcl
(2)下載源碼包
- 進入指定目錄并下載 Redis 7.4 的源碼包
- 百度網盤下載地址:https://pan.baidu.com/s/1va1LCqhaR25UBuHZfyBI9w?pwd=1234
cd /usr/local
wget https://download.redis.io/releases/redis-7.4.0.tar.gz
(3)解壓源碼包
- 解壓下載的 Redis 源碼包:
tar -zxvf redis-7.4.0.tar.gz
(4)編譯和安裝
- 進入解壓后的目錄并進行編譯和安裝:
- 如果沒有出錯,應該就安裝成功了,默認的安裝路徑是在
/usr/local/bin
目錄下。 - 該目錄以及默認配置到環境變量,因此可以在任意目錄下運行這些命令。其中:
- redis-cli:是redis提供的命令行客戶端
- redis-server:是redis的服務端啟動腳本
- redis-sentinel:是redis的哨兵啟動腳本
cd redis-7.4.0
make&&make install
(5)配置
- Redis 的配置文件
redis.conf
位于源碼包中,可以將其復制到指定目錄并進行修改:
## 創建配置文件目錄
mkdir /etc/redis
## 復制配置文件
cp /usr/local/redis-7.4.0/redis.conf /etc/redis/
## 創建日志目錄
mkdir /var/log/redis/
- 使用文本編輯器(如
vi
)打開配置文件:
vi /etc/redis/redis.confbind 0.0.0.0
daemonize yes
requirepass 123123456
logfile "/var/log/redis/redis.log"
- 根據需要修改以下配置項:
- 允許訪問的地址:默認是 bind 127.0.0.1,只能本地訪問。修改為bind 0.0.0.0則可以任意IP訪問,生產環境不要這樣設置。
- 后臺運行:將
daemonize no
修改為daemonize yes
。 - 設置密碼(可選):取消
requirepass
的注釋,并設置密碼,例如requirepass 123456
。 - 日志文件:設置日志文件路徑,例如
logfile "/var/log/redis/redis.log"
。
(6)啟動
- 為了給外部客戶端訪問,需要關閉系統防火墻
## 關閉防火墻
sudo systemctl stop firewalld
## 關閉防火墻開機啟動
sudo systemctl disable firewalld
- 默認啟動:安裝完成后,在任意目錄輸入redis-server命令即可啟動Redis,這種啟動屬于
前臺啟動
,會阻塞整個會話窗口,窗口關閉或者按下CTRL + C
則Redis停止。不推薦使用。
redis-server
- 配置文件啟動:如果要讓Redis以
后臺
方式啟動,則必須修改Redis配置文件,并以配置文件啟動:
/usr/local/bin/redis-server /etc/redis/redis.conf
- 如果要停止 redis 服務,可以使用命令
# 連接到Redis服務器(無密碼時)
redis-cli shutdown # 若配置了密碼認證
redis-cli -a 你的密碼 shutdown
(7)驗證安裝
- 可以通過以下命令驗證 Redis 是否安裝成功,如果返回
testvalue
,說明 Redis 安裝成功。
[root@localhost ~]# redis-cli -a 123123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
- Redis安裝完成后就?帶了命令?客戶端:redis-cli,使??式如下:
redis-cli [options] [commonds]
- 其中常?的options有:
- -h 127.0.0.1 :指定要連接的redis節點的IP地址,默認是127.0.0.1
- -p 6379 :指定要連接的redis節點的端?,默認是6379
- -a 123321 :指定redis的訪問密碼
- 其中的commonds就是Redis的操作命令,例如:
- ping :與redis服務端做?跳測試,服務端正常會返回 pong
- 不指定commond時,會進? redis-cli 的交互控制臺
(8)設置開機自啟
- 為了使 Redis 在系統啟動時自動運行,可以創建一個 systemd 服務文件:
vi /etc/systemd/system/redis.service
- 將以下內容復制到文件中(注意
ExecStart
的路徑為你的 Redis 配置文件路徑):
[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target
- 配置說明
- Description:定義服務描述信息,用于標識該服務名稱(顯示在
systemctl status
中)。 - After=network.target:指定服務啟動順序:需在網絡服務(
network.target
)初始化完成后啟動,確保Redis能正常監聽端口。 - Type=forking
- 適用于以守護進程(后臺)模式運行的服務。Redis默認配置為
daemonize yes
(后臺運行),需與此參數匹配。 - 若Redis未配置為守護進程(
daemonize no
),需改為Type=simple
,否則服務會啟動失敗。
- 適用于以守護進程(后臺)模式運行的服務。Redis默認配置為
- ExecStart:服務啟動命令,指定Redis服務端程序路徑及配置文件路徑。
- PrivateTmp=true:為服務分配獨立的臨時目錄(
/tmp/systemd-private-*
),防止臨時文件沖突或泄露,增強安全性。 - WantedBy=multi-user.target
- 定義服務所屬的Systemd目標(target),表示在多用戶模式下啟用該服務。
- 執行
systemctl enable redis
后,服務會隨系統啟動自動加載。
- Description:定義服務描述信息,用于標識該服務名稱(顯示在
- 保存并退出后,重新加載 systemd 配置:
systemctl daemon-reload
- 可以用下面這組命令來操作redis:
# 啟動
systemctl start redis
# 停止
systemctl stop redis
# 重啟
systemctl restart redis
# 查看狀態
systemctl status redis
# 開機自啟
systemctl enable redis
5、Redis 圖形客戶端工具
(1)Another Redis Desktop Manager
- 特點:
- 跨平臺支持(Windows、Mac、Linux)。
- 界面簡潔,性能出眾,支持加載海量鍵值。
- 支持哨兵、集群、SSH 通道、SSL 認證、Stream、訂閱、樹狀視圖、命令行,以及暗黑模式。
- 支持多種格式化方式,甚至可以自定義格式化腳本。
- 下載地址:https://github.com/qishibo/AnotherRedisDesktopManager
(2)RedisInsight
- 特點:
- 由 Redis 官方提供,功能強大,支持監控和分析 Redis 數據。
- 支持多種數據結構、命令、索引、查詢和聚合等功能。
- 提供命令行交互功能,支持 Redis 5.0 的 Stream 數據類型。
- 免費社區版和付費企業版可選。
- 下載地址:https://redis.com/redis-enterprise/redis-insight/
(3)Redis Desktop Manager (RDM)
- 特點:
- 跨平臺支持(Windows、Linux、macOS)。
- 提供直觀的界面來查看和操作 Redis 數據,支持多種數據類型的展示。
- 支持 SSL/TLS 加密、SSH 隧道技術和云 Redis 實例(如 Amazon ElastiCache、Microsoft Azure Redis Cache 和 Redis Labs)。
- 舊版本免費,新版本需付費,但可以通過編譯源碼繼續使用免費版本。
- 下載地址:https://rdm.dev/
(4)Medis
- 特點:
- 專為 Mac 設計,界面簡潔美觀。
- 支持數據的可視化展示和編輯,提供方便的搜索和過濾功能。
- 免費使用。
- 下載地址:http://getmedis.com/
(5)Redis Plus
- 特點:
- 開源免費的桌面客戶端軟件,支持跨平臺。
- 提供基本的鍵值查看、編輯、刪除操作。
- 支持監控功能。
- 下載地址:https://gitee.com/MaxBill/RedisPlus
(6)Tiny RDM
- 特點:
- 現代化、輕量級的跨平臺 Redis 桌面客戶端,支持 Windows、Mac 和 Linux。
- 界面精美,支持淺色/深色主題。
- 支持 SSH 隧道、SSL、哨兵模式、集群模式、HTTP 代理、SOCKS5 代理。
- 支持命令實時監控、數據導入/導出、發布訂閱等功能。
- 下載地址:https://github.com/tiny-craft/tiny-rdm
(7)QuickRedis
- 特點:
- 永久免費的 Redis 可視化管理工具。
- 支持直連、哨兵、集群模式,支持海量鍵值。
- 界面友好,支持 Windows、Mac OS X 和 Linux。
- 下載地址:https://gitee.com/quick123official/quick_redis_blog
(8)使用建議
- 如果你需要一個功能全面且免費的工具,推薦使用 Another Redis Desktop Manager 或 RedisInsight。
- 如果你使用 Mac 系統,可以嘗試 Medis。