Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:在不反序列化的情况下将项推送到封送或JSON?_Ruby_Json_Serialization_Marshalling - Fatal编程技术网

Ruby:在不反序列化的情况下将项推送到封送或JSON?

Ruby:在不反序列化的情况下将项推送到封送或JSON?,ruby,json,serialization,marshalling,Ruby,Json,Serialization,Marshalling,是否可以在JSON或封送中序列化数组,并将序列化项推送到序列化数组的末尾?或者我必须反序列化数组,推送项,然后重新序列化它 像这样或在JSON中工作的东西 x = [1,2,3] serial = Marshal.dump(x) serial << Marshal.dump([4]) Marshal.load(serial) => [1,2,3,4] 原则上,这应该是可能的,但我认为它不实用。这比用Ruby做要复杂得多。为什么不能在Ruby中实现这一点,然后立即序列化它呢?我

是否可以在JSON或封送中序列化数组,并将序列化项推送到序列化数组的末尾?或者我必须反序列化数组,推送项,然后重新序列化它

像这样或在JSON中工作的东西

x = [1,2,3]
serial = Marshal.dump(x)
serial << Marshal.dump([4])
Marshal.load(serial)
=> [1,2,3,4]

原则上,这应该是可能的,但我认为它不实用。这比用Ruby做要复杂得多。为什么不能在Ruby中实现这一点,然后立即序列化它呢?我使用的是Redis。我将有大量的大型集合,我将尝试序列化这些集合,并使用Redis字符串代替集合。对我来说,只在字符串的末尾推送序列化的项目,而不是获取字符串、反序列化、推送、重新序列化和设置它,这将非常方便。如果您必须不断地反序列化和重新序列化字符串,那么您可能没有适当地使用Redis。由于我没有使用它,我不能给你一个合适的模型,但是你应该考虑把RADIS作为标签添加到这个问题中。假设您想使用JSONA来存储数据,您还应该考虑切换到JSON存储,如MunGDB或CouCHDB。@ PATRU灵感来自此处:有趣的阅读,感谢指针。但是请注意,他们只是在测量了系统的性能之后才进行这种优化。显然,反序列化列表、更改列表和重新序列化列表的时间对状态更新请求并不重要,但重新规范化服务于它们最重要的聚合查询。如果您可能有类似的查询特征,那么您可能应该采用这种方法。