汤姆大聪明 2024-09-14 10:58 采纳率: 0%
浏览 6

Redis存储时碰到枚举变量,存储的value不是我想要返回的,怎么解决?

img

img


如上两图我想要存储的枚举变量是0/1或普通用户/管理员,但是Redis写入的却是ANDIM,要怎么配置,才能使无论什么枚举变量 存入的都是我想要的那些……

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-14 10:59
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    看起来你在使用Redis存储枚举变量时遇到了问题,你希望存储的枚举值(例如0/"普通用户",1/"管理员")在存入Redis时变成了其他值(如ANDIM)。这个问题可能是由于你在将枚举值存入Redis时的序列化/反序列化过程没有正确配置导致的。下面是一些可能的解决方案:

    1. 使用Java的序列化机制: 如果你使用Java的序列化机制来存储和读取枚举值,确保你在读取时使用了相同的类加载器和序列化机制。Java的序列化会将对象转换为字节流,然后再将其存储到Redis中。当你从Redis中读取数据时,需要使用相同的类加载器和反序列化机制来恢复原始对象。如果你的应用程序环境中有任何更改(例如类加载器或JVM版本),可能会影响序列化和反序列化的结果。
    2. 自定义序列化方式: 如果你不想使用Java的默认序列化机制,你可以自定义序列化和反序列化逻辑。你可以使用例如Jackson库的序列化功能,将枚举值序列化为字符串,然后使用相同的字符串从Redis中反序列化回来。这通常更容易控制并且更加灵活。例如,你可以使用@JsonSerialize@JsonDeserialize注解来指定序列化和反序列化的方式。
    3. 检查Redis客户端和库: 确保你使用的Redis客户端库支持你需要的序列化方式。不同的Redis客户端库可能支持不同的序列化方式,并可能需要你显式配置序列化和反序列化机制。例如,如果你使用的是Jedis或Lettuce等Java Redis客户端库,确保你正确配置了序列化和反序列化器。
    4. 检查其他中间件或框架: 如果你在应用中使用了一些中间件或框架(如Spring Data Redis),它们可能也有自己的序列化和反序列化机制。确保这些中间件或框架的配置与你的需求一致。

    为了解决这个问题,你需要检查你的代码和配置,确保你在存储和读取枚举值时使用了相同的序列化和反序列化机制。如果你使用的是自定义的序列化方式,确保你的序列化和反序列化逻辑是正确的。如果你使用的是第三方库或框架,确保你正确配置了这些库或框架的序列化和反序列化机制。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?