Есть несколько приложений, которые используют одну базу данных Redis, но хотят работать с одним из её внутренних баз данных.
Если все они используют StpUtil.getSession().set(key, userInfo)
, где ключи должны быть одинаковыми, а объекты userInfo
представляют различные классы, это может привести к ошибкам преобразования типов при получении значений.
Чтобы избежать этих ошибок, можно использовать следующие подходы:
Использование 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);
Хранение информации в виде 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.