@gordon.gan/specflow 1.4.0-beta → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/prompts/approval/database-guidance.md +79 -0
- package/prompts/approval/generate.md +569 -290
- package/skills/database/LICENSE +405 -0
- package/skills/database/ORIGIN.md +6 -0
- package/skills/database/README.md +30 -0
- package/skills/database/elasticsearch/LICENSE.txt +202 -0
- package/skills/database/elasticsearch/SKILL.md +199 -0
- package/skills/database/elasticsearch/examples/01-fulltext-search.md +215 -0
- package/skills/database/elasticsearch/examples/02-aggregation-report.md +206 -0
- package/skills/database/elasticsearch/examples/03-reindex-zero-downtime.md +200 -0
- package/skills/database/elasticsearch/examples/04-cluster-monitoring.md +204 -0
- package/skills/database/elasticsearch/references/01-query-dsl-fulltext.md +162 -0
- package/skills/database/elasticsearch/references/02-query-dsl-term.md +210 -0
- package/skills/database/elasticsearch/references/03-aggregations-metric.md +161 -0
- package/skills/database/elasticsearch/references/04-aggregations-bucket.md +236 -0
- package/skills/database/elasticsearch/references/05-mapping-types.md +134 -0
- package/skills/database/elasticsearch/references/06-analyzers.md +187 -0
- package/skills/database/elasticsearch/references/07-cluster-ops.md +225 -0
- package/skills/database/elasticsearch/references/08-elk-integration.md +170 -0
- package/skills/database/mysql/SKILL.md +195 -0
- package/skills/database/mysql/examples/01-connection-pool.md +75 -0
- package/skills/database/mysql/examples/02-slow-query-optimization.md +98 -0
- package/skills/database/mysql/examples/03-master-slave-setup.md +144 -0
- package/skills/database/mysql/examples/04-backup-strategy.md +212 -0
- package/skills/database/mysql/references/01-functions-string.md +103 -0
- package/skills/database/mysql/references/02-functions-date.md +152 -0
- package/skills/database/mysql/references/03-functions-aggregate-window.md +167 -0
- package/skills/database/mysql/references/04-functions-json.md +129 -0
- package/skills/database/mysql/references/05-sql-ddl-types.md +235 -0
- package/skills/database/mysql/references/06-index-optimization.md +232 -0
- package/skills/database/mysql/references/07-replication-ha.md +213 -0
- package/skills/database/mysql/references/08-backup-restore.md +207 -0
- package/skills/database/mysql/references/09-advanced-features.md +345 -0
- package/skills/database/oracle/LICENSE.txt +202 -0
- package/skills/database/oracle/SKILL.md +238 -0
- package/skills/database/oracle/examples/01-plsql-procedure.md +90 -0
- package/skills/database/oracle/examples/02-awr-analysis.md +99 -0
- package/skills/database/oracle/examples/03-rman-backup.md +108 -0
- package/skills/database/oracle/examples/04-dataguard-setup.md +146 -0
- package/skills/database/oracle/references/01-functions-string.md +91 -0
- package/skills/database/oracle/references/02-functions-date.md +71 -0
- package/skills/database/oracle/references/03-analytic-functions.md +103 -0
- package/skills/database/oracle/references/04-plsql-guide.md +303 -0
- package/skills/database/oracle/references/05-performance-tuning.md +164 -0
- package/skills/database/oracle/references/06-backup-recovery.md +115 -0
- package/skills/database/oracle/references/07-dataguard-rac.md +76 -0
- package/skills/database/oracle/references/08-security.md +170 -0
- package/skills/database/oracle/references/09-sql-syntax.md +152 -0
- package/skills/database/oracle/references/10-features.md +174 -0
- package/skills/database/postgresql/LICENSE.txt +202 -0
- package/skills/database/postgresql/SKILL.md +182 -0
- package/skills/database/postgresql/examples/.gitkeep +0 -0
- package/skills/database/postgresql/examples/01-jsonb-query.md +72 -0
- package/skills/database/postgresql/examples/02-cte-recursive.md +110 -0
- package/skills/database/postgresql/examples/03-performance-tuning.md +114 -0
- package/skills/database/postgresql/examples/04-streaming-replication.md +113 -0
- package/skills/database/postgresql/references/.gitkeep +0 -0
- package/skills/database/postgresql/references/01-functions-string.md +174 -0
- package/skills/database/postgresql/references/02-functions-datetime.md +54 -0
- package/skills/database/postgresql/references/03-functions-aggregate-window.md +142 -0
- package/skills/database/postgresql/references/04-functions-jsonb.md +117 -0
- package/skills/database/postgresql/references/05-fulltext-search.md +109 -0
- package/skills/database/postgresql/references/06-index-types.md +95 -0
- package/skills/database/postgresql/references/07-partition-fdw.md +133 -0
- package/skills/database/postgresql/references/08-replication-backup.md +215 -0
- package/skills/database/redis/LICENSE.txt +202 -0
- package/skills/database/redis/SKILL.md +922 -0
- package/skills/database/redis/examples/01-cache-usage.md +104 -0
- package/skills/database/redis/examples/02-session-storage.md +72 -0
- package/skills/database/redis/examples/03-leaderboard.md +63 -0
- package/skills/database/redis/examples/04-redis-cluster-setup.md +70 -0
- package/skills/database/redis/examples/05-stream-queue.md +65 -0
- package/skills/database/redis/references/command-quick-ref.md +180 -0
- package/skills/database/redis/references/commands-admin-key.md +413 -0
- package/skills/database/redis/references/commands-set-sorted-advanced.md +539 -0
- package/skills/database/redis/references/commands-string-hash-list.md +458 -0
- package/skills/database/redis/references/memory-optimization.md +150 -0
- package/skills/database/redis/references/redis-conf-production.md +139 -0
- package/skills/specflow-approval/SKILL.md +100 -181
- package/templates/approval.md +295 -221
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
# Redis 命令详解 — Key / 事务 / Lua / PubSub / 连接 / 服务器
|
|
2
|
+
|
|
3
|
+
> 内容源自 doc.redisfans.com 完整翻译版 (Redis 2.8+),每个命令包含简介、参数说明、业务场景。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Key(键)命令
|
|
8
|
+
|
|
9
|
+
| 命令 | 时间复杂度 | 可用版本 | 说明 |
|
|
10
|
+
|------|-----------|---------|------|
|
|
11
|
+
| DEL | O(N) | ≥1.0.0 | 删除 key |
|
|
12
|
+
| EXISTS | O(1) | ≥1.0.0 | 检查存在 |
|
|
13
|
+
| EXPIRE | O(1) | ≥1.0.0 | 设置 TTL |
|
|
14
|
+
| TTL | O(1) | ≥1.0.0 | 查看 TTL |
|
|
15
|
+
| TYPE | O(1) | ≥1.0.0 | 返回类型 |
|
|
16
|
+
| KEYS | O(N) | ≥1.0.0 | 查找 key |
|
|
17
|
+
| SCAN | O(1)/cursor | ≥2.8.0 | 渐进遍历 |
|
|
18
|
+
|
|
19
|
+
### DEL
|
|
20
|
+
**DEL key [key ...]**
|
|
21
|
+
|
|
22
|
+
删除一个或多个 key。不支持通配符(请使用 SCAN + DEL)。
|
|
23
|
+
- 时间复杂度 O(N):N 为删除的 key 数量,复杂类型(List/Set/ZSet/Hash)删除时间与元素数量相关
|
|
24
|
+
|
|
25
|
+
**业务场景**:
|
|
26
|
+
- 清理缓存 `DEL cache:user:42 cache:user:43 cache:user:44`
|
|
27
|
+
- 重置数据 `DEL user:1001:session`
|
|
28
|
+
|
|
29
|
+
**返回值**:被删除 key 的数量
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### EXISTS
|
|
34
|
+
**EXISTS key [key ...] (Redis 3.0.3+ 支持多 key)**
|
|
35
|
+
|
|
36
|
+
检查 key 是否存在。多 key 版本返回存在的 key 数。
|
|
37
|
+
|
|
38
|
+
**业务场景**:
|
|
39
|
+
- 缓存命中判断 `EXISTS cache:hot:article:42` → 1 命中
|
|
40
|
+
- 批量校验 `EXISTS key1 key2 key3` → 快速判断多个 key 全部存在
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### EXPIRE / PEXPIRE
|
|
45
|
+
**EXPIRE key seconds**
|
|
46
|
+
**PEXPIRE key milliseconds**
|
|
47
|
+
|
|
48
|
+
设置 key 的生存时间(秒/毫秒),到期后自动删除(易失性)。
|
|
49
|
+
- TTL 不会被只读/修改命令(INCR/LPUSH/HSET)改变
|
|
50
|
+
- RENAME 后新 key 继承 TTL
|
|
51
|
+
- SET/GETSET 会清除原有 TTL
|
|
52
|
+
|
|
53
|
+
**业务场景**:
|
|
54
|
+
```
|
|
55
|
+
# 导航会话(60 秒无操作清空)
|
|
56
|
+
MULTI
|
|
57
|
+
RPUSH navig:user:42 "page_3"
|
|
58
|
+
EXPIRE navig:user:42 60
|
|
59
|
+
EXEC
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### EXPIREAT / PEXPIREAT
|
|
65
|
+
**EXPIREAT key timestamp**
|
|
66
|
+
**PEXPIREAT key milliseconds-timestamp**
|
|
67
|
+
|
|
68
|
+
设置 key 在指定 Unix 时间戳过期。精确到秒/毫秒。
|
|
69
|
+
|
|
70
|
+
**业务场景**:
|
|
71
|
+
- **优惠券到期**:`EXPIREAT coupon:user:42 1893456000`(2030-01-01 00:00)
|
|
72
|
+
- **定时删除**:配合 cron 计算到期时间戳
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### TTL / PTTL
|
|
77
|
+
**TTL key** — 返回剩余生存时间(秒),-1 无过期,-2 key 不存在
|
|
78
|
+
**PTTL key** — 返回毫秒数
|
|
79
|
+
|
|
80
|
+
**业务场景**:
|
|
81
|
+
- 热键 TTL 监控(防止缓存穿透)
|
|
82
|
+
- 动态延长热点数据 TTL:TTL < 30 时 EXPIRE 续期
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### PERSIST
|
|
87
|
+
**PERSIST key** — 移除 key 的过期时间,使其持久保留
|
|
88
|
+
|
|
89
|
+
**业务场景**:将热点 key 从"定时过期"转为"永久缓存"
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### TYPE
|
|
94
|
+
**TYPE key** — 返回 key 的数据类型:string / list / set / zset / hash / stream / none
|
|
95
|
+
|
|
96
|
+
**业务场景**:键值类型校验,防止对集合类型执行字符串操作
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### KEYS
|
|
101
|
+
**KEYS pattern** — 查找所有匹配 pattern 的 key
|
|
102
|
+
- 支持 glob 风格:`*` `?` `[a-z]`
|
|
103
|
+
- **O(N) 阻塞操作,生产环境严禁使用**
|
|
104
|
+
|
|
105
|
+
**正确做法**:使用 `SCAN 0 MATCH user:* COUNT 100`
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### SCAN
|
|
110
|
+
**SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]**
|
|
111
|
+
|
|
112
|
+
渐进式迭代数据库中的 key。每次返回游标 + 一批 key。
|
|
113
|
+
- cursor = 0 开始迭代,cursor = 0 结束
|
|
114
|
+
- COUNT 提示每次返回数量(不保证精确)
|
|
115
|
+
- TYPE 过滤类型 (Redis 6.0+)
|
|
116
|
+
|
|
117
|
+
**业务场景**:
|
|
118
|
+
```
|
|
119
|
+
SCAN 0 MATCH user:* COUNT 100 # 迭代查找 user: 开头的 key
|
|
120
|
+
SCAN 0 TYPE hash COUNT 100 # 只找 hash 类型的 key
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### RENAME / RENAMENX
|
|
126
|
+
**RENAME key newkey** — 改名(newkey 存在则覆盖)
|
|
127
|
+
**RENAMENX key newkey** — 改名(仅 newkey 不存在时)
|
|
128
|
+
|
|
129
|
+
**业务场景**:数据迁移、key 命名变更、A/B 测试流量切换
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### MOVE
|
|
134
|
+
**MOVE key db** — 将当前数据库的 key 移到指定数据库
|
|
135
|
+
|
|
136
|
+
> 注意:Cluster 模式只支持 0 号数据库,MOVE 无法使用。
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### RANDOMKEY
|
|
141
|
+
**RANDOMKEY** — 从当前数据库中随机返回一个 key
|
|
142
|
+
|
|
143
|
+
**业务场景**:数据采样、缓存预热随机检查
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### DUMP / RESTORE
|
|
148
|
+
**DUMP key** — 序列化 key 并返回(含 TTL 信息)
|
|
149
|
+
**RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME t] [FREQ f]**
|
|
150
|
+
|
|
151
|
+
**业务场景**:
|
|
152
|
+
- **迁移单个 key**:源 DUMP → 目标 RESTORE
|
|
153
|
+
- **备份恢复**:对单个 key 做序列化备份
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### OBJECT
|
|
158
|
+
**OBJECT subcommand [arguments [arguments]]**
|
|
159
|
+
- `OBJECT REFCOUNT key` — 引用计数
|
|
160
|
+
- `OBJECT ENCODING key` — 底层编码(raw/embstr/ziplist/dict/intset/skiplist)
|
|
161
|
+
- `OBJECT IDLETIME key` — 空闲时间(LRU 相关)
|
|
162
|
+
|
|
163
|
+
**业务场景**:
|
|
164
|
+
```
|
|
165
|
+
OBJECT ENCODING user:1001 → "hashtable" 或 "ziplist"
|
|
166
|
+
OBJECT IDLETIME hot_data → 判断是否为闲置 key
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### SORT
|
|
172
|
+
**SORT key [BY pattern] [LIMIT offset count] [GET pattern] [ASC|DESC] [ALPHA] [STORE destination]**
|
|
173
|
+
|
|
174
|
+
对 List、Set、ZSet 中的元素排序(支持外部 key BY/GET,**可能阻塞**)。
|
|
175
|
+
|
|
176
|
+
> Redis 6.2.0+ 弃用 SORT,推荐使用 SORT_RO(只读版)。
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 2. 事务(Transaction)命令
|
|
181
|
+
|
|
182
|
+
| 命令 | 时间复杂度 | 可用版本 | 说明 |
|
|
183
|
+
|------|-----------|---------|------|
|
|
184
|
+
| MULTI | O(1) | ≥1.2.0 | 开始事务 |
|
|
185
|
+
| EXEC | 取决于命令 | ≥1.2.0 | 执行 |
|
|
186
|
+
| DISCARD | O(1) | ≥2.0.0 | 取消 |
|
|
187
|
+
| WATCH | O(1) | ≥2.0.0 | 乐观锁 |
|
|
188
|
+
|
|
189
|
+
### MULTI / EXEC / DISCARD
|
|
190
|
+
**MULTI** — 标记事务块开始(后续命令入队)
|
|
191
|
+
**EXEC** — 顺序执行队列中所有命令
|
|
192
|
+
**DISCARD** — 取消事务,清空命令队列
|
|
193
|
+
|
|
194
|
+
**事务特性**:
|
|
195
|
+
- 原子性:EXEC 时要么全部执行,要么因语法错误全部不执行
|
|
196
|
+
- 无回滚:运行时错误(如对 string 执行 LIST 操作)不影响其他命令
|
|
197
|
+
- 隔离性:EXEC 前其他客户端不会看到中间状态
|
|
198
|
+
|
|
199
|
+
**业务场景**:
|
|
200
|
+
```
|
|
201
|
+
# 转账(原子扣减 + 增加)
|
|
202
|
+
MULTI
|
|
203
|
+
DECRBY account:42 1000
|
|
204
|
+
INCRBY account:100 1000
|
|
205
|
+
EXEC
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
### WATCH / UNWATCH
|
|
211
|
+
**WATCH key [key ...]** — 乐观锁(CAS)
|
|
212
|
+
**UNWATCH** — 取消所有 WATCH
|
|
213
|
+
|
|
214
|
+
**业务场景**:
|
|
215
|
+
```
|
|
216
|
+
# 库存扣减(CAS 保证)
|
|
217
|
+
WATCH stock:item:1001
|
|
218
|
+
count = GET stock:item:1001
|
|
219
|
+
if count > 0:
|
|
220
|
+
MULTI
|
|
221
|
+
DECRBY stock:item:1001 1
|
|
222
|
+
EXEC # 如果 stock:item:1001 在此期间被修改 → EXEC 返回 nil
|
|
223
|
+
else:
|
|
224
|
+
UNWATCH # 放弃监视
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 3. Lua 脚本命令
|
|
230
|
+
|
|
231
|
+
| 命令 | 可用版本 | 说明 |
|
|
232
|
+
|------|---------|------|
|
|
233
|
+
| EVAL | ≥2.6.0 | 执行脚本 |
|
|
234
|
+
| EVALSHA | ≥2.6.0 | 执行缓存脚本 |
|
|
235
|
+
| SCRIPT LOAD | ≥2.6.0 | 加载到缓存 |
|
|
236
|
+
| SCRIPT EXISTS | ≥2.6.0 | 检查缓存 |
|
|
237
|
+
| SCRIPT FLUSH | ≥2.6.0 | 清理缓存 |
|
|
238
|
+
| SCRIPT KILL | ≥2.6.0 | 终止运行 |
|
|
239
|
+
|
|
240
|
+
### EVAL
|
|
241
|
+
**EVAL script numkeys key [key ...] arg [arg ...]**
|
|
242
|
+
|
|
243
|
+
在服务器端执行 Lua 脚本。脚本在 Redis 内原子执行。
|
|
244
|
+
|
|
245
|
+
**关键规则**:
|
|
246
|
+
- 所有 key 通过 KEYS 数组传入(Cluster 兼容)
|
|
247
|
+
- 所有参数通过 ARGV 数组传入
|
|
248
|
+
- 脚本应短小精悍(Lua 脚本执行时阻塞其他所有请求)
|
|
249
|
+
|
|
250
|
+
**业务场景:原子取余分配**
|
|
251
|
+
```lua
|
|
252
|
+
-- 一致性哈希槽分配
|
|
253
|
+
local slot = redis.call("HGET", KEYS[1], ARGV[1])
|
|
254
|
+
if not slot then
|
|
255
|
+
slot = redis.call("HLEN", KEYS[1]) % tonumber(ARGV[2])
|
|
256
|
+
redis.call("HSET", KEYS[1], ARGV[1], slot)
|
|
257
|
+
end
|
|
258
|
+
return slot
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**业务场景:原子限流**
|
|
262
|
+
```lua
|
|
263
|
+
-- 滑动窗口限流
|
|
264
|
+
local key = KEYS[1]
|
|
265
|
+
local now = redis.call("TIME")[1]
|
|
266
|
+
local window = tonumber(ARGV[1])
|
|
267
|
+
local limit = tonumber(ARGV[2])
|
|
268
|
+
|
|
269
|
+
redis.call("ZREMRANGEBYSCORE", key, 0, now - window)
|
|
270
|
+
local count = redis.call("ZCARD", key)
|
|
271
|
+
|
|
272
|
+
if count < limit then
|
|
273
|
+
redis.call("ZADD", key, now, now .. ":" .. math.random())
|
|
274
|
+
redis.call("EXPIRE", key, window)
|
|
275
|
+
return 1 -- 允许
|
|
276
|
+
else
|
|
277
|
+
return 0 -- 限流
|
|
278
|
+
end
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 4. Pub/Sub(发布/订阅)命令
|
|
284
|
+
|
|
285
|
+
| 命令 | 可用版本 | 说明 |
|
|
286
|
+
|------|---------|------|
|
|
287
|
+
| SUBSCRIBE | ≥2.0.0 | 订阅频道 |
|
|
288
|
+
| PUBLISH | ≥2.0.0 | 发布消息 |
|
|
289
|
+
| PSUBSCRIBE | ≥2.0.0 | 模式订阅 |
|
|
290
|
+
|
|
291
|
+
### SUBSCRIBE / PUBLISH
|
|
292
|
+
**SUBSCRIBE channel [channel ...]** — 订阅一个或多个频道
|
|
293
|
+
**PUBLISH channel message** — 向频道发送消息
|
|
294
|
+
|
|
295
|
+
**业务场景**:
|
|
296
|
+
- **实时通知广播**:用户发布新内容时通知关注者
|
|
297
|
+
- **服务状态广播**:配置变更通知所有服务实例
|
|
298
|
+
- **实时聊天**:每个聊天室一个频道
|
|
299
|
+
|
|
300
|
+
### PSUBSCRIBE
|
|
301
|
+
**PSUBSCRIBE pattern [pattern ...]**
|
|
302
|
+
|
|
303
|
+
按模式订阅频道。模式支持 glob 风格:`news.*` 匹配 `news.sports`、`news.tech` 等。
|
|
304
|
+
|
|
305
|
+
### PUBSUB
|
|
306
|
+
**PUBSUB subcommand [argument [arguments]]**
|
|
307
|
+
- `PUBSUB CHANNELS [pattern]` — 查看当前活跃频道
|
|
308
|
+
- `PUBSUB NUMSUB [channel ...]` — 查看频道订阅数
|
|
309
|
+
- `PUBSUB NUMPAT` — 查看模式订阅数
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 5. 连接(Connection)命令
|
|
314
|
+
|
|
315
|
+
| 命令 | 可用版本 | 说明 |
|
|
316
|
+
|------|---------|------|
|
|
317
|
+
| AUTH | ≥1.0.0 | 密码认证 |
|
|
318
|
+
| SELECT | ≥1.0.0 | 切换数据库 |
|
|
319
|
+
| PING | ≥1.0.0 | 存活检测 |
|
|
320
|
+
| CLIENT | ≥2.4.0 | 客户端管理 |
|
|
321
|
+
|
|
322
|
+
### AUTH
|
|
323
|
+
**AUTH password** — 向 Redis 验证密码(requirepass 配置)
|
|
324
|
+
|
|
325
|
+
### SELECT
|
|
326
|
+
**SELECT index** — 切换到指定数据库(0-15,默认 16 个库)
|
|
327
|
+
> ⚠️ Cluster 模式不支持 SELECT,只可用 0 号库。推荐用不同 key 前缀代替。
|
|
328
|
+
|
|
329
|
+
### PING
|
|
330
|
+
**PING** — 检查连接是否存活。返回 PONG。
|
|
331
|
+
|
|
332
|
+
### QUIT
|
|
333
|
+
**QUIT** — 关闭连接
|
|
334
|
+
|
|
335
|
+
### CLIENT 系列
|
|
336
|
+
**CLIENT SETNAME name** — 设置连接名称(便于 DEBUG)
|
|
337
|
+
**CLIENT GETNAME** — 获取连接名称
|
|
338
|
+
**CLIENT LIST** — 列出所有连接(含名称/地址/状态/缓冲区大小)
|
|
339
|
+
**CLIENT KILL [ip:port] [ID client-id]** — 杀掉连接
|
|
340
|
+
**CLIENT PAUSE timeout** — 暂停所有客户端命令(用于故障转移)
|
|
341
|
+
**CLIENT UNPAUSE** — 恢复
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 6. 服务器(Server)命令
|
|
346
|
+
|
|
347
|
+
| 命令 | 可用版本 | 说明 |
|
|
348
|
+
|------|---------|------|
|
|
349
|
+
| INFO | ≥1.0.0 | 服务器信息 |
|
|
350
|
+
| CONFIG | ≥2.0.0 | 配置管理 |
|
|
351
|
+
| SLOWLOG | ≥2.2.12 | 慢查询日志 |
|
|
352
|
+
| MONITOR | ≥1.0.0 | 实时调试 |
|
|
353
|
+
|
|
354
|
+
### INFO
|
|
355
|
+
**INFO [section]**
|
|
356
|
+
|
|
357
|
+
返回服务器信息(含 9 个 section):
|
|
358
|
+
- Server / Clients / Memory / Persistence / Stats / Replication / CPU / Keyspace / Cluster
|
|
359
|
+
|
|
360
|
+
**常用**:`INFO MEMORY` `INFO STATS` `INFO REPLICATION` `INFO KEYSPACE`
|
|
361
|
+
|
|
362
|
+
### CONFIG
|
|
363
|
+
**CONFIG GET parameter** — 获取配置值 `CONFIG GET *` 全部
|
|
364
|
+
**CONFIG SET parameter value** — 修改运行时配置(无需重启)
|
|
365
|
+
**CONFIG REWRITE** — 写入 redis.conf(使修改持久化)
|
|
366
|
+
**CONFIG RESETSTAT** — 重置 INFO 统计
|
|
367
|
+
|
|
368
|
+
### SLOWLOG
|
|
369
|
+
**SLOWLOG GET [count]** — 返回慢查询
|
|
370
|
+
**SLOWLOG LEN** — 慢查询总数
|
|
371
|
+
**SLOWLOG RESET** — 清空慢查询
|
|
372
|
+
|
|
373
|
+
### MONITOR
|
|
374
|
+
实时打印 Redis 收到的所有命令。**生产慎用**(降低约 50% 吞吐量)。
|
|
375
|
+
|
|
376
|
+
### FLUSHDB / FLUSHALL
|
|
377
|
+
**FLUSHDB** — 清空当前数据库
|
|
378
|
+
**FLUSHALL** — 清空所有数据库
|
|
379
|
+
> 用 `CONFIG SET rename-command FLUSHALL ""` 禁用
|
|
380
|
+
|
|
381
|
+
### BGSAVE / SAVE
|
|
382
|
+
**BGSAVE** — 后台 fork 生成 RDB(不阻塞)
|
|
383
|
+
**SAVE** — 前台生成 RDB(阻塞所有请求)
|
|
384
|
+
|
|
385
|
+
### BGREWRITEAOF
|
|
386
|
+
异步重写 AOF 文件(压缩)。
|
|
387
|
+
|
|
388
|
+
### SHUTDOWN
|
|
389
|
+
**SHUTDOWN [NOSAVE|SAVE]** — 关闭服务器
|
|
390
|
+
- SAVE:关闭前生成 RDB
|
|
391
|
+
- NOSAVE:跳过保存
|
|
392
|
+
|
|
393
|
+
### SLAVEOF
|
|
394
|
+
**SLAVEOF host port** — 设置主从
|
|
395
|
+
**SLAVEOF NO ONE** — 取消复制,提升为主
|
|
396
|
+
|
|
397
|
+
### ROLE
|
|
398
|
+
返回实例的角色:master / slave / sentinel + 复制状态
|
|
399
|
+
|
|
400
|
+
### INFO 关键字段解读
|
|
401
|
+
|
|
402
|
+
```
|
|
403
|
+
used_memory_human: 4.00G # 已用内存
|
|
404
|
+
used_memory_peak_human: 6.00G # 峰值内存
|
|
405
|
+
mem_fragmentation_ratio: 1.37 # 碎片率(>1.5 需整理)
|
|
406
|
+
connected_clients: 50 # 当前连接数
|
|
407
|
+
instantaneous_ops_per_sec: 15000 # 当前 QPS
|
|
408
|
+
keyspace_hits: 410000 # 缓存命中率计算
|
|
409
|
+
keyspace_misses: 82000
|
|
410
|
+
expired_keys: 0 # 过期 key 数
|
|
411
|
+
evicted_keys: 0 # 淘汰 key 数
|
|
412
|
+
rejected_connections: 0 # 拒绝的连接数
|
|
413
|
+
```
|