nodejs + redis,能否直接在list中存储json数据呢?难道都要先转成字符串,读取出来再转换?

2014-02-07 20:13:36 +08:00
 teavoid
目前的做法是是
存储时:JSON.stringify(val)
读取时:JSON.parse(val)
这样也太坑了吧?
14418 次点击
所在节点    Redis
9 条回复
binux
2014-02-07 20:20:14 +08:00
封装一层不就好了。。
teavoid
2014-02-07 21:32:56 +08:00
@binux 自己封装的话,比如插入1000条数据,插入是比较简单,每个set转换下,但是读取的时候,还需要遍历这1000条数据逐个转换,感觉好奇怪
learnshare
2014-02-07 22:16:14 +08:00
JSON 是只能在内存里的数据结构,字符串才能保存到硬盘中
SoloCompany
2014-02-07 22:55:22 +08:00
如果你认为自己可以实现比字符串序列化更高效的序列方法,就自己实现个吧,否则,老老实实用默认实现就是了,最大的好处是数据的可阅读性
binux
2014-02-07 22:58:55 +08:00
@teavoid 别人给你封装就不用了?
zythum
2014-02-07 23:07:52 +08:00
@SoloCompany 说的很正确 这个是对象序列化的方式,因为你要存储到内存里的。但是好要恢复。JSON是js自带的对象序列化方式。

之余ruby是(Marshal) .dump方法。这个貌似很厉害的样子。但是可读性上JSON是相当好的。

js也有Marshal的模块。你也可以试试。npm上找找。折腾下也不错。
teavoid
2014-02-07 23:27:36 +08:00
@SoloCompany
@binux
我就是确认是否只能这么做。。。毕竟刚接触redis
yangff
2014-02-08 00:15:09 +08:00
@teavoid 当然,这个操作的本质是把内存数据序列成可写入的数据。
ijse
2014-02-08 09:20:27 +08:00
redis 跟 json本质上都是键值映射,可以用hmset() 和hgetall()方法存取,参照nodebb的源码:

https://github.com/designcreateplay/NodeBB/blob/master/src/database/redis.js#L209-L236

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/99264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX