1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dromara-sa-token

 / Детали:

Проблемы с использованием одной базы данных Redis несколькими приложениями

Предстоит сделать
Владелец
Создано  
01.03.2025

Есть несколько приложений, которые используют одну базу данных Redis, но хотят работать с одним из её внутренних баз данных.
Если все они используют StpUtil.getSession().set(key, userInfo), где ключи должны быть одинаковыми, а объекты userInfo представляют различные классы, это может привести к ошибкам преобразования типов при получении значений.

Чтобы избежать этих ошибок, можно использовать следующие подходы:

  1. Использование JSON сериализации: Преобразуйте объекты userInfo в строки JSON перед тем как сохранять их в Redis. При получении значения из Redis снова преобразуйте его обратно в объект userInfo. Это позволяет хранить данные любого типа в одном поле Redis.

    Пример использования Jackson для сериализации/десериализации:

    ObjectMapper mapper = new ObjectMapper();
    String jsonUserInfo = mapper.writeValueAsString(userInfo);
    StpUtil.getSession().set(key, jsonUserInfo);
    
    // Получение значения
    String jsonValue = StpUtil.getSession().get(key);
    UserInfoClass userInfoObject = mapper.readValue(jsonValue, UserInfoClass.class);
    
  2. Хранение информации в виде Map: Сохраните информацию в виде карты, где ключами могут быть поля объекта userInfo.

    Пример:

    Map<String, Object> map = new HashMap<>();
    map.put("name", userInfo.getName());
    map.put("age", userInfo.getAge());
    
    StpUtil.getSession().set(key, map);
    
    // Получение значения
    Map<String, Object> valueMap = StpUtil.getSession().get(key);
    String name = (String) valueMap.get("name");
    int age = (int) valueMap.get("age");
    

Эти методы позволяют вам избежать проблем с типами данных при работе с различными классами userInfo в Redis.

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/dromara-sa-token.git
git@api.gitlife.ru:oschina-mirror/dromara-sa-token.git
oschina-mirror
dromara-sa-token
dromara-sa-token