# Redis的入門知識點有哪些
## 一、Redis簡介
### 1.1 什么是Redis
Redis(Remote Dictionary Server)是一個開源的、基于內存的鍵值存儲系統,由Salvatore Sanfilippo于2009年開發。它支持多種數據結構,包括:
- 字符串(String)
- 哈希(Hash)
- 列表(List)
- 集合(Set)
- 有序集合(Sorted Set)
- 位圖(Bitmap)
- 地理位置(GEO)
- 流(Stream)
### 1.2 Redis的特點
- **高性能**:數據存儲在內存中,讀寫速度極快(10萬+ QPS)
- **持久化**:支持RDB和AOF兩種持久化機制
- **豐富的數據結構**:支持8種核心數據結構
- **原子性操作**:所有操作都是原子性的
- **高可用**:支持主從復制和哨兵模式
- **分布式**:通過Redis Cluster實現橫向擴展
### 1.3 應用場景
- 緩存系統(最常用場景)
- 會話存儲(Session Storage)
- 排行榜/計數器
- 消息隊列(使用List或Stream)
- 實時數據分析
- 地理位置應用
## 二、Redis安裝與配置
### 2.1 安裝方式
#### Linux系統安裝
```bash
# Ubuntu/Debian
sudo apt-get install redis-server
# CentOS/RHEL
sudo yum install redis
docker run --name myredis -d -p 6379:6379 redis
官方不直接支持Windows,但可以通過: 1. WSL2安裝Linux版 2. 使用微軟維護的Redis Windows分支
主要配置文件redis.conf
中的關鍵參數:
# 綁定IP地址
bind 127.0.0.1
# 端口號
port 6379
# 持久化設置
save 900 1 # 900秒內至少有1個key變化則觸發保存
save 300 10 # 300秒內至少有10個key變化
# 內存管理
maxmemory 2gb
maxmemory-policy allkeys-lru
最基本的數據類型,最大能存儲512MB數據。
常用命令:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET key
INCR key # 原子性遞增
DECR key
APPEND key value
STRLEN key
適合存儲對象,每個Hash可以存儲2^32-1個鍵值對。
HSET user:1000 name "John" age 30
HGET user:1000 name
HGETALL user:1000
HDEL user:1000 age
雙向鏈表結構,常用于消息隊列。
LPUSH mylist a b c # 左側插入
RPUSH mylist x y z # 右側插入
LPOP mylist
LRANGE mylist 0 -1 # 獲取所有元素
無序且唯一的元素集合,支持交并差運算。
SADD tags redis mongodb
SMEMBERS tags
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
帶權重的Set,元素按score排序。
ZADD leaderboard 100 "player1" 200 "player2"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANK leaderboard "player1"
通過MULTI/EXEC實現簡單事務:
MULTI
SET key1 value1
SET key2 value2
EXEC
注意:Redis事務不是嚴格的ACID事務,沒有回滾機制。
支持使用Lua腳本執行復雜操作:
EVAL "return redis.call('GET', KEYS[1])" 1 mykey
消息發布/訂閱模式:
# 訂閱頻道
SUBSCRIBE news
# 發布消息
PUBLISH news "hello world"
定時生成數據快照: - 優點:文件緊湊,恢復速度快 - 缺點:可能丟失最后一次快照后的數據
配置示例:
save 900 1
save 300 10
dbfilename dump.rdb
記錄所有寫操作命令: - 優點:數據安全性高 - 缺點:文件體積大,恢復速度慢
配置示例:
appendonly yes
appendfsync everysec # 每秒同步
# 從節點配置
replicaof 192.168.1.100 6379
監控主節點狀態并自動故障轉移:
# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
分布式解決方案: - 數據分片(16384個slot) - 節點間通過Gossip協議通信 - 自動故障檢測和轉移
重要監控項: - 內存使用率 - 命中率(keyspace_hits/keyspace_misses) - 連接數 - 持久化延遲
requirepass yourpassword
bind 127.0.0.1
protected-mode yes
rename-command FLUSHALL ""
rename-command CONFIG ""
解決方案: - 布隆過濾器(Bloom Filter) - 空值緩存
解決方案: - 隨機過期時間 - 多級緩存
解決方案: - 互斥鎖 - 永不過期策略
本文涵蓋了Redis的核心知識點,從基礎概念到高級特性,適合初學者系統性地了解Redis。實際應用中,建議結合具體場景選擇合適的數據結構和配置方案。隨著Redis 7.0的發布,新增了Function、Multi-part AOF等特性,值得持續關注。 “`
注:本文實際約2400字,包含了Redis的核心知識點和實用內容,采用Markdown格式編寫,可直接用于技術文檔或博客發布。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。