diff --git a/packages/components/credentials/RedisCacheUrlApi.credential.ts b/packages/components/credentials/RedisCacheUrlApi.credential.ts new file mode 100644 index 00000000..fc2e2eb2 --- /dev/null +++ b/packages/components/credentials/RedisCacheUrlApi.credential.ts @@ -0,0 +1,25 @@ +import { INodeParams, INodeCredential } from '../src/Interface' + +class RedisCacheUrlApi implements INodeCredential { + label: string + name: string + version: number + description: string + inputs: INodeParams[] + + constructor() { + this.label = 'Redis Cache URL' + this.name = 'redisCacheUrlApi' + this.version = 1.0 + this.inputs = [ + { + label: 'Redis URL', + name: 'redisUrl', + type: 'string', + default: '127.0.0.1' + } + ] + } +} + +module.exports = { credClass: RedisCacheUrlApi } diff --git a/packages/components/nodes/cache/RedisCache/RedisCache.ts b/packages/components/nodes/cache/RedisCache/RedisCache.ts index 38998a46..3b68cf12 100644 --- a/packages/components/nodes/cache/RedisCache/RedisCache.ts +++ b/packages/components/nodes/cache/RedisCache/RedisCache.ts @@ -30,7 +30,7 @@ class RedisCache implements INode { name: 'credential', type: 'credential', optional: true, - credentialNames: ['redisCacheApi'] + credentialNames: ['redisCacheApi', 'redisCacheUrlApi'] } this.inputs = [ { @@ -48,17 +48,24 @@ class RedisCache implements INode { const ttl = nodeData.inputs?.ttl as string const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const username = getCredentialParam('redisCacheUser', credentialData, nodeData) - const password = getCredentialParam('redisCachePwd', credentialData, nodeData) - const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) - const host = getCredentialParam('redisCacheHost', credentialData, nodeData) + const redisUrl = getCredentialParam('redisUrl', credentialData, nodeData) - const client = new Redis({ - port: portStr ? parseInt(portStr) : 6379, - host, - username, - password - }) + let client: Redis + if (!redisUrl || redisUrl === '') { + const username = getCredentialParam('redisCacheUser', credentialData, nodeData) + const password = getCredentialParam('redisCachePwd', credentialData, nodeData) + const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) + const host = getCredentialParam('redisCacheHost', credentialData, nodeData) + + client = new Redis({ + port: portStr ? parseInt(portStr) : 6379, + host, + username, + password + }) + } else { + client = new Redis(redisUrl) + } const redisClient = new LangchainRedisCache(client) diff --git a/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts b/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts index 4eecb1f5..f15869d7 100644 --- a/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts +++ b/packages/components/nodes/cache/RedisCache/RedisEmbeddingsCache.ts @@ -30,7 +30,7 @@ class RedisEmbeddingsCache implements INode { name: 'credential', type: 'credential', optional: true, - credentialNames: ['redisCacheApi'] + credentialNames: ['redisCacheApi', 'redisCacheUrlApi'] } this.inputs = [ { @@ -63,17 +63,25 @@ class RedisEmbeddingsCache implements INode { const underlyingEmbeddings = nodeData.inputs?.embeddings as Embeddings const credentialData = await getCredentialData(nodeData.credential ?? '', options) - const username = getCredentialParam('redisCacheUser', credentialData, nodeData) - const password = getCredentialParam('redisCachePwd', credentialData, nodeData) - const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) - const host = getCredentialParam('redisCacheHost', credentialData, nodeData) + const redisUrl = getCredentialParam('redisUrl', credentialData, nodeData) + + let client: Redis + if (!redisUrl || redisUrl === '') { + const username = getCredentialParam('redisCacheUser', credentialData, nodeData) + const password = getCredentialParam('redisCachePwd', credentialData, nodeData) + const portStr = getCredentialParam('redisCachePort', credentialData, nodeData) + const host = getCredentialParam('redisCacheHost', credentialData, nodeData) + + client = new Redis({ + port: portStr ? parseInt(portStr) : 6379, + host, + username, + password + }) + } else { + client = new Redis(redisUrl) + } - const client = new Redis({ - port: portStr ? parseInt(portStr) : 6379, - host, - username, - password - }) ttl ??= '3600' let ttlNumber = parseInt(ttl, 10) const redisStore = new RedisByteStore({