微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 python 脚本中解码 FST 编码的 redis 密钥?

如何解决如何在 python 脚本中解码 FST 编码的 redis 密钥?

我有一个 Java Spring 应用程序,它使用 Redisson 客户端将一些数据以哈希形式存储在 redis 中。存储的键是字符串(例如“key1”),值是 java 对象。使用的编解码器是认的,所以 FSTCodec.我想要做的是使用python脚本(我使用的是redis-py客户端)在redis中找到一个键并将其删除。当我从 redis 获取密钥时,它们的格式类似于:[b'\xfc\x07key1',b'\xfc\x05key2',b'\xfc\x02key3']。当我做这样的事情时

r = redis.StrictRedis()
hash = r.keys(pattern='*key*')  # to get the hash
hk = r.hkeys(hash[0])
print(hk) # returns [b'\xfc\x07key1',b'\xfc\x02key3']
for key in hk:
   print("key ",key)
   print("value",r.hget(hash[0],key)) #None

结果是没有。我尝试了多种方法获取价值,但无济于事。 (不熟悉python)

如果我使用 redis-cli 在命令行中执行相同操作,则键的格式略有不同 "\xfc\akey1",当我执行 HGET test_key "\xfc\akey1" 时,它会正确返回值。

我应该在这里注意,我必须能够找到已知为“key1”的密钥。因此,我的输入是“key1”,我必须获取所有密钥并扫描它们以找到并删除其中包含“key1”的密钥,在本例中为 \xfc\x07key1。

我也尝试通过 decode_responses 进行解码,但我收到了 UnicodeDecodeError: 'utf-8' codec can't decode byte in position 0: invalid start byte

有没有办法从我的 python 脚本中解码密钥?如,删除 FSTCodec 添加的 \xfc... 部分。否则,我怎样才能得到正确的密钥?将 redisson 使用的编解码器更改为 JsonJacksonCodec 的唯一解决方案是什么?任何帮助将不胜感激

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。