跳到內容

Redis

Redis 是高效能的記憶體鍵值儲存系統,常用於快取、Session 管理、訊息佇列等場景。Piora 讓你能快速部署 Redis 實例並與應用整合。

  1. 在控制面板進入「資料庫」頁面
  2. 選擇「Redis」
  3. 選擇版本(建議使用 Redis 7)
  4. 設定參數:
參數說明範例
服務名稱容器識別名稱my-redis
密碼存取密碼(選填)(自動產生)
最大記憶體記憶體上限256mb
Terminal window
# 有密碼的連線字串
redis://:password@redis-container:6379
# 無密碼的連線字串
redis://redis-container:6379
# 指定資料庫編號(預設為 0)
redis://:password@redis-container:6379/0
// Node.js (ioredis)
const Redis = require('ioredis');
const redis = new Redis(process.env.REDIS_URL);
// 基本操作
await redis.set('key', 'value');
const value = await redis.get('key');
# Python (redis-py)
import redis
r = redis.from_url(os.environ['REDIS_URL'])
r.set('key', 'value')
value = r.get('key')
// Express.js + connect-redis
const session = require('express-session');
const RedisStore = require('connect-redis').default;
app.use(session({
store: new RedisStore({ client: redisClient }),
secret: 'your-secret',
resave: false,
saveUninitialized: false,
}));
// 快取 API 回應
async function getCachedData(key, fetchFn, ttl = 300) {
const cached = await redis.get(key);
if (cached) return JSON.parse(cached);
const data = await fetchFn();
await redis.setex(key, ttl, JSON.stringify(data));
return data;
}
// 簡易速率限制器
async function rateLimit(ip, limit = 100, window = 60) {
const key = `rate:${ip}`;
const count = await redis.incr(key);
if (count === 1) await redis.expire(key, window);
return count <= limit;
}

當 Redis 達到記憶體上限時,需要設定淘汰策略:

策略說明
noeviction不淘汰,記憶體滿時拒絕寫入
allkeys-lru淘汰最久未使用的 key(推薦)
volatile-lru只淘汰有設定過期時間的 key
allkeys-random隨機淘汰

Redis 支援兩種持久化方式:

  • RDB — 定期產生快照,適合備份
  • AOF — 記錄每個寫入操作,資料安全性更高

在 Piora 中,Redis 預設啟用 RDB 持久化,資料儲存在 Docker Volume 中。

在控制面板中可以查看:

  • 記憶體使用量與上限
  • 連線數
  • 每秒操作數(QPS)
  • Key 數量統計