redis数据库设计的一个小疑问,是用 set( book:1:name, xx ) 还是 hSet( book:1 name, xx )存储

2013-11-29 11:59:16 +08:00
 wudikua
如果把Book看做关系数据库里面的表名,name看作是列名,直接存KEY和存在VALUE的HASHTABLE的KEY里各有什么特长啊。
5836 次点击
所在节点    Redis
8 条回复
skydiver
2013-11-29 12:06:39 +08:00
用hSet效率高一些
peonone
2013-11-29 13:05:25 +08:00
hset相当于是2级hash
如果book:1:name数量比较多,还是用hset合适
peonone
2013-11-29 13:07:40 +08:00
redis和关系型数据库的差距比较大,不要用关系数据库的概念去对应
xia0ta0
2013-11-29 13:21:08 +08:00
推荐hset,set适合存储离散的数据
如果想得到一本书有name和author属性,使用set,get需要存储或者读取两次;使用set的存储的数据可以用hgetall一次读出来。
好处还有很多,推荐看一下redis作者写的一个仿reddit Hacknews的程序lamernews
https://github.com/antirez/lamernews
xia0ta0
2013-11-29 17:43:13 +08:00
写错了。。。 是使用hset的存储的数据可以用hgetall一次读出来
cyokvip
2013-11-29 17:43:28 +08:00
好像用hset比较多
mckelvin
2013-11-30 20:14:13 +08:00
hset正适合这么用。在http://redis.io/topics/data-types Hashes一节中写道:

A hash with a few fields (where few means up to one hundred or so) is stored in a way that takes very little space, so you can store millions of objects in a small Redis instance.
wudikua
2013-11-30 21:50:35 +08:00
@mckelvin 那一本书的 N个chapter 适不适合存 hset呢,比如 hset(Book:1 chapter:1, XXOO); 一章的内容大概5000字。
哎。现在我好多都是存的key,可能被phpRedisAdmin误导了,因为那个可以自动分割 “:”变得比较可视化,我还以为redis推荐这么做呢,也是受http://www.searchdatabase.com.cn/showcontent_52657.htm 这篇文章中的登录那部分的设计的引导。

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

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

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

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

© 2021 V2EX