寫在前面 今天我們來學習一下 Redis 。Redis 是一個高性能的開源記憶體數據存儲系統,支持多種數據結構,如字元串、列表、集合、有序集合和哈希表。 NoSQL 概述 隨著大數據的興起,數據量的暴增,數據類型的豐富,傳統的關係資料庫在應付動態網站,特別是超大規模和高併發的純動態網站時已經顯得力不從 ...
寫在前面
今天我們來學習一下 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 源碼包上傳到 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