Skip to content

Commit 057e056

Browse files
authored
Bugfix/Add missing TTL implementation for Redis (#2131)
add missing TTL implementation
1 parent 827de07 commit 057e056

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

packages/components/nodes/memory/RedisBackedChatMemory/RedisBackedChatMemory.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ const initalizeRedis = async (nodeData: INodeData, options: ICommonObject): Prom
162162
chatHistory: redisChatMessageHistory,
163163
sessionId,
164164
windowSize,
165-
redisClient: client
165+
redisClient: client,
166+
sessionTTL
166167
})
167168

168169
return memory
@@ -172,18 +173,21 @@ interface BufferMemoryExtendedInput {
172173
redisClient: Redis
173174
sessionId: string
174175
windowSize?: number
176+
sessionTTL?: number
175177
}
176178

177179
class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods {
178180
sessionId = ''
179181
redisClient: Redis
180182
windowSize?: number
183+
sessionTTL?: number
181184

182185
constructor(fields: BufferMemoryInput & BufferMemoryExtendedInput) {
183186
super(fields)
184187
this.sessionId = fields.sessionId
185188
this.redisClient = fields.redisClient
186189
this.windowSize = fields.windowSize
190+
this.sessionTTL = fields.sessionTTL
187191
}
188192

189193
async getChatMessages(overrideSessionId = '', returnBaseMessages = false): Promise<IMessage[] | BaseMessage[]> {
@@ -207,12 +211,14 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods {
207211
const newInputMessage = new HumanMessage(input.text)
208212
const messageToAdd = [newInputMessage].map((msg) => msg.toDict())
209213
await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0]))
214+
if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL)
210215
}
211216

212217
if (output) {
213218
const newOutputMessage = new AIMessage(output.text)
214219
const messageToAdd = [newOutputMessage].map((msg) => msg.toDict())
215220
await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0]))
221+
if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL)
216222
}
217223
}
218224

packages/components/nodes/memory/UpstashRedisBackedChatMemory/UpstashRedisBackedChatMemory.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ class UpstashRedisBackedChatMemory_Memory implements INode {
8888

8989
const initalizeUpstashRedis = async (nodeData: INodeData, options: ICommonObject): Promise<BufferMemory> => {
9090
const baseURL = nodeData.inputs?.baseURL as string
91-
const sessionTTL = nodeData.inputs?.sessionTTL as string
9291
const sessionId = nodeData.inputs?.sessionId as string
92+
const _sessionTTL = nodeData.inputs?.sessionTTL as string
93+
94+
const sessionTTL = _sessionTTL ? parseInt(_sessionTTL, 10) : undefined
9395

9496
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
9597
const upstashRestToken = getCredentialParam('upstashRestToken', credentialData, nodeData)
@@ -101,14 +103,15 @@ const initalizeUpstashRedis = async (nodeData: INodeData, options: ICommonObject
101103

102104
const redisChatMessageHistory = new UpstashRedisChatMessageHistory({
103105
sessionId,
104-
sessionTTL: sessionTTL ? parseInt(sessionTTL, 10) : undefined,
106+
sessionTTL,
105107
client
106108
})
107109

108110
const memory = new BufferMemoryExtended({
109111
memoryKey: 'chat_history',
110112
chatHistory: redisChatMessageHistory,
111113
sessionId,
114+
sessionTTL,
112115
redisClient: client
113116
})
114117

@@ -118,16 +121,19 @@ const initalizeUpstashRedis = async (nodeData: INodeData, options: ICommonObject
118121
interface BufferMemoryExtendedInput {
119122
redisClient: Redis
120123
sessionId: string
124+
sessionTTL?: number
121125
}
122126

123127
class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods {
124128
sessionId = ''
125129
redisClient: Redis
130+
sessionTTL?: number
126131

127132
constructor(fields: BufferMemoryInput & BufferMemoryExtendedInput) {
128133
super(fields)
129134
this.sessionId = fields.sessionId
130135
this.redisClient = fields.redisClient
136+
this.sessionTTL = fields.sessionTTL
131137
}
132138

133139
async getChatMessages(overrideSessionId = '', returnBaseMessages = false): Promise<IMessage[] | BaseMessage[]> {
@@ -152,12 +158,14 @@ class BufferMemoryExtended extends FlowiseMemory implements MemoryMethods {
152158
const newInputMessage = new HumanMessage(input.text)
153159
const messageToAdd = [newInputMessage].map((msg) => msg.toDict())
154160
await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0]))
161+
if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL)
155162
}
156163

157164
if (output) {
158165
const newOutputMessage = new AIMessage(output.text)
159166
const messageToAdd = [newOutputMessage].map((msg) => msg.toDict())
160167
await this.redisClient.lpush(id, JSON.stringify(messageToAdd[0]))
168+
if (this.sessionTTL) await this.redisClient.expire(id, this.sessionTTL)
161169
}
162170
}
163171

0 commit comments

Comments
 (0)