如何序列化为一个字符串然后反序列化(对于Redis)?

时间:2016-04-05 12:39:14

标签: redis julia

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

为什么readall(x)会返回一个空字符串?

更新

似乎我必须

或者:

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

x = IOBuffer()
serialize(x, "ll")
takebuf_string(x)

但他们都给了我UnicodeError: invalid character index

最终我想获得序列化对象的字符串表示形式,将其存储到Redis中。

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

解决方案

x = IOBuffer()
serialize(x, "ll")
takebuf_array(x)

它不是字符串,而是字节数组。 Julia字符串比Python 2 str更严格。

1 个答案:

答案 0 :(得分:2)

反序列化的功能是deserialize(stream)

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

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

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).

这与将任意字节写入流不同,请查看?write并尝试使用readalltakebuf_string

之类的内容