具有不同持久性的多个 Redis 客户端?
Multiple Redis clients with different persistence?
我需要 3 个不同的 redis 数据库,所以我有 3 个不同的 redis 客户端,如下所示:
const gCDCache = redis.createClient();
const CDCache = redis.createClient();
const vcsCache = redis.createClient();
我需要前 2 个缓存不持久化,因为它们只是冷却缓存。
第三个缓存需要保留,因为它包含一些重要数据。
有没有办法在不同的客户端之间有不同的持久性策略?
实现该目标的最佳方法是什么?
我在网上搜索了一下,没有找到答案,不胜感激,谢谢。
对于上下文,这是我的 caches.js 文件(那里有 4 个缓存):
// Bot redis caches
const redis = require("redis");
const { promisify } = require("util");
// Global Cooldown cache
const gCDCache = redis.createClient();
const setGCD = promisify(gCDCache.set).bind(gCDCache);
const getGCD = promisify(gCDCache.get).bind(gCDCache);
const existsGCD = promisify(gCDCache.exists).bind(gCDCache);
const delGCD = promisify(gCDCache.del).bind(gCDCache);
gCDCache.on("error", (error) => {
console.error(error);
});
// Cooldown cache
const CDCache = redis.createClient();
const getCD = promisify(CDCache.get).bind(CDCache);
const setCD = promisify(CDCache.set).bind(CDCache);
const existsCD = promisify(CDCache.exists).bind(CDCache);
const delCD = promisify(CDCache.del).bind(CDCache);
CDCache.on("error", (error) => {
console.error(error);
});
// Guild Settings Cache
const gCache = redis.createClient();
const setGuildSettings = promisify(gCache.set).bind(gCache);
const getGuildSettings = promisify(gCache.get).bind(gCache);
const existsGuildSettings = promisify(gCache.exists).bind(gCache);
const delGuildSettings = promisify(gCache.del).bind(gCache);
gCache.on("error", (error) => {
console.error(error);
});
// VCs Cache
const vcsCache = redis.createClient();
const setVCs = promisify(vcsCache.set).bind(vcsCache);
const getVCs = promisify(vcsCache.get).bind(vcsCache);
vcsCache.on("error", (error) => {
console.error(error);
});
const caches = {
gCache: gCache,
setGuildSettings: setGuildSettings,
getGuildSettings: getGuildSettings,
existsGuildSettings: existsGuildSettings,
delGuildSettings: delGuildSettings,
vcsCache: vcsCache,
setVCs: setVCs,
getVCs: getVCs,
gCDCache: gCDCache,
setGCD: setGCD,
getGCD: getGCD,
existsGCD: existsGCD,
delGCD: delGCD,
CDCache: CDCache,
getCD: getCD,
setCD: setCD,
existsCD: existsCD,
delCD: delCD
}
module.exports.caches = caches;
console.log('Astro\'s Caches Loaded');
Redis 持久化是在服务器端而不是客户端配置的。并且不可能对一个 Redis 实例有不同的持久化策略。
对于您的情况,如果您想要不同的持久化策略(RDB、AOF 或只是禁用),您可以设置多个 Redis 服务器并为这些服务器创建不同的 Redis 客户端。
对于node-redis,您可以为不同的服务器创建不同的客户端,如下所示:
redis.createClient([options])
redis.createClient(unix_socket[, options])
redis.createClient(redis_url[, options])
redis.createClient(port[, host][, options])
我需要 3 个不同的 redis 数据库,所以我有 3 个不同的 redis 客户端,如下所示:
const gCDCache = redis.createClient();
const CDCache = redis.createClient();
const vcsCache = redis.createClient();
我需要前 2 个缓存不持久化,因为它们只是冷却缓存。 第三个缓存需要保留,因为它包含一些重要数据。
有没有办法在不同的客户端之间有不同的持久性策略?
实现该目标的最佳方法是什么?
我在网上搜索了一下,没有找到答案,不胜感激,谢谢。
对于上下文,这是我的 caches.js 文件(那里有 4 个缓存):
// Bot redis caches
const redis = require("redis");
const { promisify } = require("util");
// Global Cooldown cache
const gCDCache = redis.createClient();
const setGCD = promisify(gCDCache.set).bind(gCDCache);
const getGCD = promisify(gCDCache.get).bind(gCDCache);
const existsGCD = promisify(gCDCache.exists).bind(gCDCache);
const delGCD = promisify(gCDCache.del).bind(gCDCache);
gCDCache.on("error", (error) => {
console.error(error);
});
// Cooldown cache
const CDCache = redis.createClient();
const getCD = promisify(CDCache.get).bind(CDCache);
const setCD = promisify(CDCache.set).bind(CDCache);
const existsCD = promisify(CDCache.exists).bind(CDCache);
const delCD = promisify(CDCache.del).bind(CDCache);
CDCache.on("error", (error) => {
console.error(error);
});
// Guild Settings Cache
const gCache = redis.createClient();
const setGuildSettings = promisify(gCache.set).bind(gCache);
const getGuildSettings = promisify(gCache.get).bind(gCache);
const existsGuildSettings = promisify(gCache.exists).bind(gCache);
const delGuildSettings = promisify(gCache.del).bind(gCache);
gCache.on("error", (error) => {
console.error(error);
});
// VCs Cache
const vcsCache = redis.createClient();
const setVCs = promisify(vcsCache.set).bind(vcsCache);
const getVCs = promisify(vcsCache.get).bind(vcsCache);
vcsCache.on("error", (error) => {
console.error(error);
});
const caches = {
gCache: gCache,
setGuildSettings: setGuildSettings,
getGuildSettings: getGuildSettings,
existsGuildSettings: existsGuildSettings,
delGuildSettings: delGuildSettings,
vcsCache: vcsCache,
setVCs: setVCs,
getVCs: getVCs,
gCDCache: gCDCache,
setGCD: setGCD,
getGCD: getGCD,
existsGCD: existsGCD,
delGCD: delGCD,
CDCache: CDCache,
getCD: getCD,
setCD: setCD,
existsCD: existsCD,
delCD: delCD
}
module.exports.caches = caches;
console.log('Astro\'s Caches Loaded');
Redis 持久化是在服务器端而不是客户端配置的。并且不可能对一个 Redis 实例有不同的持久化策略。
对于您的情况,如果您想要不同的持久化策略(RDB、AOF 或只是禁用),您可以设置多个 Redis 服务器并为这些服务器创建不同的 Redis 客户端。
对于node-redis,您可以为不同的服务器创建不同的客户端,如下所示:
redis.createClient([options])
redis.createClient(unix_socket[, options])
redis.createClient(redis_url[, options])
redis.createClient(port[, host][, options])