如上两图我想要存储的枚举变量是0/1或普通用户/管理员,但是Redis写入的却是ANDIM,要怎么配置,才能使无论什么枚举变量 存入的都是我想要的那些……
Redis存储时碰到枚举变量,存储的value不是我想要返回的,怎么解决?
如上两图我想要存储的枚举变量是0/1或普通用户/管理员,但是Redis写入的却是ANDIM,要怎么配置,才能使无论什么枚举变量 存入的都是我想要的那些……
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 一轮明月照丘壑 2024-09-14 10:59关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
看起来你在使用Redis存储枚举变量时遇到了问题,你希望存储的枚举值(例如0/"普通用户",1/"管理员")在存入Redis时变成了其他值(如ANDIM)。这个问题可能是由于你在将枚举值存入Redis时的序列化/反序列化过程没有正确配置导致的。下面是一些可能的解决方案:
- 使用Java的序列化机制: 如果你使用Java的序列化机制来存储和读取枚举值,确保你在读取时使用了相同的类加载器和序列化机制。Java的序列化会将对象转换为字节流,然后再将其存储到Redis中。当你从Redis中读取数据时,需要使用相同的类加载器和反序列化机制来恢复原始对象。如果你的应用程序环境中有任何更改(例如类加载器或JVM版本),可能会影响序列化和反序列化的结果。
- 自定义序列化方式: 如果你不想使用Java的默认序列化机制,你可以自定义序列化和反序列化逻辑。你可以使用例如Jackson库的序列化功能,将枚举值序列化为字符串,然后使用相同的字符串从Redis中反序列化回来。这通常更容易控制并且更加灵活。例如,你可以使用
@JsonSerialize
和@JsonDeserialize
注解来指定序列化和反序列化的方式。 - 检查Redis客户端和库: 确保你使用的Redis客户端库支持你需要的序列化方式。不同的Redis客户端库可能支持不同的序列化方式,并可能需要你显式配置序列化和反序列化机制。例如,如果你使用的是Jedis或Lettuce等Java Redis客户端库,确保你正确配置了序列化和反序列化器。
- 检查其他中间件或框架: 如果你在应用中使用了一些中间件或框架(如Spring Data Redis),它们可能也有自己的序列化和反序列化机制。确保这些中间件或框架的配置与你的需求一致。
为了解决这个问题,你需要检查你的代码和配置,确保你在存储和读取枚举值时使用了相同的序列化和反序列化机制。如果你使用的是自定义的序列化方式,确保你的序列化和反序列化逻辑是正确的。如果你使用的是第三方库或框架,确保你正确配置了这些库或框架的序列化和反序列化机制。
解决 无用评论 打赏 举报
悬赏问题
- ¥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驱动,如何解决?