寫在前面
今天我們來學習一下 Redis 。Redis 是一個高效能的開源記憶體資料儲存系統,支援多種資料結構,如字串、列表、集合、有序集合和雜湊表。
NoSQL 概述
隨著大資料的興起,資料量的暴增,資料型別的豐富,傳統的關聯式資料庫在應付動態網站,特別是超大規模和高併發的純動態網站時已經顯得力不從心,暴露了很多難以克服的問題。例如:
- 商城網站中對商品資料頻繁查詢
- 對熱搜商品的排行統計
- 訂單超時問題
- 微信朋友圈(音訊,影片)儲存等
傳統的關係型資料庫雖然可以實現相應功能,但在效能上並不理想。NoSQL 技術的出現解決了這些問題,它展示了世界上不僅僅存在 SQL 的可能性。
Redis 是一個高效能的開源記憶體資料儲存系統,支援多種資料結構,如字串、列表、集合、有序集合和雜湊表。它不僅用作資料庫,也常用於快取和訊息中介軟體。Redis 提供了豐富的功能,包括持久化資料、事務處理、釋出/訂閱機制以及高可用性支援。由於其單執行緒設計,Redis 在處理高併發請求時表現出色。
NoSQL 的四大分類
鍵值儲存資料庫
- Tokyo Cabinet/Tyrant
- Redis: 基於記憶體的資料儲存,執行在軟體 → 磁碟 → 記憶體中
- SSDB: 基於磁碟的,直接與磁碟互動 → IO
- Voldemort
- Oracle BDB
列儲存資料庫
- HBase
- Cassandra
- ClickHouse
文件型資料庫
- MongoDB
- CouchDB
- SequoiaDB: 國內的文件型資料庫,已開源
圖形資料庫
- Neo4J
- InfoGrid
- Infinite Graph
- OSS
NoSQL 的應用場景
- 資料模型比較簡單
- 需要靈活性更強的 IT 系統
- 對資料庫效能要求較高
- 不需要高度的資料一致性(NoSQL 資料庫對事務的支援較差)
什麼是 Redis
Redis 是一個開源的記憶體型資料儲存,遵循 BSD 許可證。它被廣泛用於資料庫、快取和訊息中介軟體。總結來說,Redis 是一個記憶體型的資料庫。
Redis 特點
- 高效能的 Key/Value 記憶體型資料庫
- 支援豐富的資料型別:
string
,list
,set
,sorted set
,hash
- 支援持久化:將資料儲存到磁碟
- 單執行緒、單程序:執行緒安全性較高
下載與安裝
-
準備環境
- VMware 12.x+
- CentOS 7.x+
-
下載 Redis 原始碼包
- Redis 官方下載連結
-
將下載的 Redis 原始碼包上傳到 Linux 中
-
解壓縮檔案
tar -zxvf redis-7.0.10.tar.gz
-
安裝 GCC
yum install -y gcc
-
進入解壓縮目錄,執行編譯命令
yum install -y tcl make MALLOC=libc
-
編譯完成後,安裝 Redis
make install PREFIX=/usr/local/soft/redis
-
啟動 Redis 服務
./usr/local/soft/redis/bin/redis-server
配置環境變數
在 /etc/profile
檔案中新增:
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export REDIS_HOME=/usr/local/soft/redis
export PATH=.:$PATH:$JAVA_HOME/bin:$REDIS_HOME/bin
基本使用
-
檢視 Redis 程序
ps -aux | grep redis
-
進行客戶端連線操作
./redis-cli -h localhost -p 6379
如果在同一臺機器上,可以省略主機和埠:
./redis-cli
Redis 中的庫
Redis 預設存在 16 個庫,編號從 0 到 15。可以使用 select
命令選擇一個庫。
-
清空當前庫
FLUSHDB
-
清空全部庫
FLUSHALL
Redis 客戶端顯示中文
./redis-cli -p 7000 --raw
操作 Key 相關指令
-
刪除 Key
DEL key [key ...]
-
檢查 Key 是否存在
EXISTS key [key ...]
-
設定 Key 的過期時間(秒)
EXPIRE key seconds
-
查詢所有符合給定模式的 Key
KEYS pattern
-
將 Key 移動到指定資料庫
MOVE key db
-
設定 Key 的過期時間(毫秒)
PEXPIRE key milliseconds
-
設定 Key 的過期時間戳(毫秒)
PEXPIREAT key milliseconds-timestamp
-
檢視 Key 的剩餘生存時間(秒)
TTL key
-
檢視 Key 的剩餘生存時間(毫秒)
PTTL key
-
隨機返回一個 Key
RANDOMKEY
-
重新命名 Key
RENAME key newkey
-
檢視 Key 的型別
TYPE key