Redis 命令小記
Redis 是一個文本/二進制數據庫(textual/binary database)
CLI 命令
redis-cli, redis-server, redis-benchmark, redis-check-dump, redis-check-aof
- redis-cli 執行命令
# 方式 1
redis-cli -h 127.0.0.1 -p 6379
> 127.0.0.1:6379> PING
# 方式 2 (緊接命令, 默認數據 0)
redis-cli SET mykey "Hello, Redis!"
redis-cli GET mykey
- redis-server 和 shell工具
# 啟動 Redis 服務器
redis-server /path/to/redis.conf
# 測試 Redis 性能
redis-benchmark -n 10000 -c 50
# 檢查 RDB 文件(Redis 數據庫文件)是否有效
redis-check-dump dump.rdb
# 檢查 AOF 文件(Append-Only File)是否有效 (--fix 檢查并修復)
redis-check-aof --fix mydata.aof
- redis-benchmark 結果查看
> redis-benchmark -n 10000 -c 50
====== 標題 (數據結構) ======10000 requests completed in 1.01 seconds # 發送了 10,000 個請求, 請求完成的時間 1.01 秒50 parallel clients # 表示同時有 50 個客戶端在發起請求3 bytes payload # 表示每個請求的負載大小keep alive: 199.65% <= 1 milliseconds # 表示 99.65% 的請求在 1 毫秒內完成。(大多數請求的性能)
99.92% <= 2 milliseconds # 表示 99.92% 的請求在 2 毫秒內完成。(大多數請求的性能)
100.00% <= 2 milliseconds # 表示所有請求都在 2 毫秒內完成。(所有請求的響應時間, 最后一個百分比含義不一樣)
57142.86 requests per second # 表示 Redis 每秒能夠處理約 57,143 個請求
更低的響應時間和高并發處理能力通常意味著 Redis 的性能良好。
基本數據類型
Redis 5 種常用數據類型,包括字符串、哈希表、列表、集合和有序集合
- 字符串: 簡單數據。
- 哈希: 存儲對象。
- 列表: 有序集合。
- 集合: 不重復元素集合。
- 有序集合: 具有分數的元素集合。
數據庫清空命令
FLUSHDB
:清空當前數據庫的所有鍵FLUSHALL
:清空所有數據庫的所有鍵
說明:
- FLUSH 意味著"清空"或"沖洗",用于移除內存中的所有數據
- DROP: 可能會引起誤解,認為是刪除整個數據庫而不僅是清空。
- DELETE ALL: 可能會被理解為逐條刪除所有數據,而 FLUSHDB 則明確表示一次性清空
- TRUNCATE: 強調的是清空數據而保留結構,用于關系型數據庫表
Redis 是一個鍵值存儲內存數據庫,FLUSH 更符合 Redis 的設計理念, 強調快速清空。
基本操作命令
鍵值檢查
KEYS pattern # 查找匹配模式的鍵
EXISTS key # 檢查鍵是否存在
ping # 檢查服務器連接
info # 獲取服務器信息
TYPE key # 獲取鍵的數據類型
DEL key # 刪除指定鍵
數據類型操作
字符串操作
SET key value # 設置字符串值
GET key # 獲取字符串值
INCR key # 將值加1
哈希表操作
HSET key field value # 設置哈希表字段的值
HGET key field # 獲取哈希表字段的值
HGETALL key # 獲取哈希表所有字段和值
列表操作
LPUSH mylist value # 將值插入列表頭部
LRANGE mylist 0 -1 # 獲取列表所有元素
LPOP mylist # 移除并返回列表第一個元素
集合操作
SADD myset member # 添加集合成員
SMEMBERS myset # 獲取集合所有成員
SISMEMBER myset member # 判斷元素是否為集合成員
有序集合操作
ZADD myzset score member # 添加成員到有序集合
ZRANGE myzset 0 -1 # 獲取有序集合所有成員
ZREM myzset member # 移除有序集合成員
高級特性
事務操作
MULTI # 開始事務
EXEC # 提交事務
DISCARD # 回滾事務
示例:
# 提交
MULTI
HSET user:1001 name "張三" age 30 email "zhangsan@example.com"
HSET user:1002 name "李四" age 28 email "lisi@example.com"
EXEC
# 回滾
MULTI
LPUSH orders:pending "訂單ID:20230901 金額:299.00"
SADD users:active 1001 1002
ZADD orders:timestamps 1661980800 "2023-09-01T08:00:00"
DISCARD
發布/訂閱
PUBLISH channel message # 發送消息
SUBSCRIBE channel # 訂閱頻道
鍵過期
EXPIRE key seconds # 設置鍵過期時間
TTL key # 獲取鍵剩余生存時間
數據庫遍歷
SCAN cursor # 迭代遍歷數據庫中的鍵
SCAN 0 MATCH *key
SCAN 0 COUNT 10