From 39c6e3146c6c920b023da6227b4058fe80cbb317 Mon Sep 17 00:00:00 2001 From: Feng Yue <2525275@gmail.com> Date: Wed, 13 Aug 2025 15:33:25 +0800 Subject: [PATCH] fix: redis issue in user management --- src/models/redis.js | 26 ++++++++++++++++++++++++++ src/services/userService.js | 17 ++++++++++------- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/models/redis.js b/src/models/redis.js index 554638c5..d93fec17 100644 --- a/src/models/redis.js +++ b/src/models/redis.js @@ -1294,6 +1294,32 @@ class RedisClient { return 0 } } + + // 🔧 Basic Redis operations wrapper methods for convenience + async get(key) { + const client = this.getClientSafe() + return await client.get(key) + } + + async set(key, value, ...args) { + const client = this.getClientSafe() + return await client.set(key, value, ...args) + } + + async setex(key, ttl, value) { + const client = this.getClientSafe() + return await client.setex(key, ttl, value) + } + + async del(...keys) { + const client = this.getClientSafe() + return await client.del(...keys) + } + + async keys(pattern) { + const client = this.getClientSafe() + return await client.keys(pattern) + } } const redisClient = new RedisClient() diff --git a/src/services/userService.js b/src/services/userService.js index 6c3a9c3a..bf0d1ff8 100644 --- a/src/services/userService.js +++ b/src/services/userService.js @@ -112,13 +112,14 @@ class UserService { // 📋 获取所有用户列表(管理员功能) async getAllUsers(options = {}) { try { + const client = redis.getClientSafe() const { page = 1, limit = 20, role, isActive } = options const pattern = `${this.userPrefix}*` - const keys = await redis.keys(pattern) + const keys = await client.keys(pattern) const users = [] for (const key of keys) { - const userData = await redis.get(key) + const userData = await client.get(key) if (userData) { const user = JSON.parse(userData) @@ -308,15 +309,16 @@ class UserService { // 🚫 使用户所有会话失效 async invalidateUserSessions(userId) { try { + const client = redis.getClientSafe() const pattern = `${this.userSessionPrefix}*` - const keys = await redis.keys(pattern) + const keys = await client.keys(pattern) for (const key of keys) { - const sessionData = await redis.get(key) + const sessionData = await client.get(key) if (sessionData) { const session = JSON.parse(sessionData) if (session.userId === userId) { - await redis.del(key) + await client.del(key) } } } @@ -356,8 +358,9 @@ class UserService { // 📊 获取用户统计信息 async getUserStats() { try { + const client = redis.getClientSafe() const pattern = `${this.userPrefix}*` - const keys = await redis.keys(pattern) + const keys = await client.keys(pattern) const stats = { totalUsers: 0, @@ -374,7 +377,7 @@ class UserService { } for (const key of keys) { - const userData = await redis.get(key) + const userData = await client.get(key) if (userData) { const user = JSON.parse(userData) stats.totalUsers++