# Redis 鍵

本頁列出套件在 Redis 寫入的每個鍵、TTL 與寫入時機，方便監控與除錯。

## 鍵一覽

| 鍵 | 值 | TTL |
|---|---|---|
| `refresh:<refresh_id>` | `RefreshData` JSON | `refreshTokenExpires` |
| `revoke:<access_token>` | `"1"` | `accessTokenExpires` |

## 寫入時機

| 操作 | 鍵 | TTL |
|---|---|---|
| `CreateJWT()` | `refresh:<id>`，`version: 1` | `refreshTokenExpires` |
| 續期（未換發） | `refresh:<id>`，`version + 1` | 重設為 `refreshTokenExpires` |
| 續期（換發） | 舊 `refresh:<id>` | 5 秒 |
| 續期（換發） | 新 `refresh:<id>`，`version: 0` | `refreshTokenExpires` |
| `RevokeJWT()` | `refresh:<id>` | 5 秒 |
| `RevokeJWT()` | `revoke:<access_token>` | `accessTokenExpires` |

## 除錯指令

```bash
# 列出所有工作階段
redis-cli --scan --pattern 'refresh:*'

# 查看某個 Refresh ID 的內容與剩餘秒數
redis-cli GET 'refresh:<refresh_id>'
redis-cli TTL 'refresh:<refresh_id>'

# 強制讓某個工作階段失效
redis-cli DEL 'refresh:<refresh_id>'
```

刪除 `refresh:<id>` 後，該工作階段在 Access Token 過期後無法續期；未過期的 Access Token 仍可通過驗證，直到過期為止。

## 容量

`revoke:` 鍵以完整 Access Token 為名，每筆約為 Token 長度（數百位元組）；登出量大時以 `accessTokenExpires` 控制保存時間。

相關：[Refresh Token 輪替](/zh/token-refresh)、[Token 撤銷](/zh/token-revocation)
