如何序列化为字符串,然后将其反序列化回来(对于Redis)?

如何序列化为字符串,然后将其反序列化回来(对于Redis)?,redis,julia,Redis,Julia,为什么readall(x)返回空字符串 更新 看来我必须这么做 要么: x = IOBuffer() serialize(x, "ll") readall(x) # "" 或 但它们都给了我UnicodeError:无效的字符索引 最终,我希望获得序列化对象的字符串表示,并将其存储到Redis中 然后从Redis获取字符串,然后从中反序列化 解决方案 这不是一根绳子,它是一条边线。Julia string比Python 2str更严格,反序列化的函数是反序列化(流) Serialize将值写入

为什么
readall(x)
返回空字符串

更新 看来我必须这么做

要么:

x = IOBuffer()
serialize(x, "ll")
readall(x) # ""

但它们都给了我
UnicodeError:无效的字符索引

最终,我希望获得序列化对象的字符串表示,并将其存储到Redis中

然后从Redis获取字符串,然后从中反序列化

解决方案
这不是一根绳子,它是一条边线。Julia string比Python 2
str
更严格,反序列化的函数是
反序列化(流)

Serialize将值写入流,以便在以后使用
反序列化
将其重构为原始值(或尽可能接近原始值)。在Julia repl中键入
?序列化将提供一些详细信息:

x = IOBuffer()
serialize(x, "ll")
seekstart(x)
deserialize(x)

这与将任意字节写入流不同,请检查
?write
,并尝试将其与
readall
takebuf\u string

反序列化的函数是
反序列化(流)

Serialize将值写入流,以便在以后使用
反序列化
将其重构为原始值(或尽可能接近原始值)。在Julia repl中键入
?序列化将提供一些详细信息:

x = IOBuffer()
serialize(x, "ll")
seekstart(x)
deserialize(x)

这与将任意字节写入流不同,请检查
?write
,并尝试将其与
readall
takebuf_string

一起使用。是否有任何方法可以在两者之间获得字符串形式?如果您特别想要传递字符串,我相信您需要将自己的字符串写入字符串,和来自字符串函数。然后您可以使用
write
readall
写入字符串并从流中读取字符串。Julia用于序列化的格式是不透明的,因此不像字符串那样是人类可读的。-作为旁注,听起来你在做一些古怪的事情,你可能想重新考虑这个方法,但我不会在不知道你想要完成什么要求的情况下做出判断!对不起,让我再解释一下我的情况。我想把字符串保存到Redis中,我想你一直在写你自己的to/from方法,或者依靠JSON编码之类的东西。请注意,序列化/反序列化肯定是不安全的,因为对于每个版本的Julia(或您键入的类型来自的包),格式可能会更改。是否有任何方法可以获取介于两者之间的字符串形式?如果您特别想传递字符串,我相信您需要编写自己的到字符串和从字符串函数。然后您可以使用
write
readall
写入字符串并从流中读取字符串。Julia用于序列化的格式是不透明的,因此不像字符串那样是人类可读的。-作为旁注,听起来你在做一些古怪的事情,你可能想重新考虑这个方法,但我不会在不知道你想要完成什么要求的情况下做出判断!对不起,让我再解释一下我的情况。我想把字符串保存到Redis中,我想你一直在写你自己的to/from方法,或者依靠JSON编码之类的东西。请注意,序列化/反序列化肯定是不安全的,因为对于每个版本的Julia(或您的类型来自的包),格式可能会更改。
x = IOBuffer()
serialize(x, "ll")
takebuf_array(x)
x = IOBuffer()
serialize(x, "ll")
seekstart(x)
deserialize(x)
help?> serialize
search: serialize Serializer deserialize SerializationState

  serialize(stream, value)

  Write an arbitrary value to a stream in an opaque format, such that it can be read back by deserialize. The read-back value will be as identical as possible to the original. In general, this process will not work if the reading and writing are done by different versions of Julia, or an instance of Julia with a different system image. Ptr values are serialized as all-zero bit patterns (NULL).