首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Redis

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

  •  
  •   wudikua · 2013-11-29 11:59:16 +08:00 · 4235 次点击
    这是一个创建于 2146 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果把Book看做关系数据库里面的表名,name看作是列名,直接存KEY和存在VALUE的HASHTABLE的KEY里各有什么特长啊。
    8 回复  |  直到 1970-01-01 08:00:00 +08:00
        1
    skydiver   2013-11-29 12:06:39 +08:00
    用hSet效率高一些
        2
    peonone   2013-11-29 13:05:25 +08:00
    hset相当于是2级hash
    如果book:1:name数量比较多,还是用hset合适
        3
    peonone   2013-11-29 13:07:40 +08:00
    redis和关系型数据库的差距比较大,不要用关系数据库的概念去对应
        4
    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
        5
    xia0ta0   2013-11-29 17:43:13 +08:00
    写错了。。。 是使用hset的存储的数据可以用hgetall一次读出来
        6
    cyokvip   2013-11-29 17:43:28 +08:00 via iPhone
    好像用hset比较多
        7
    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.
        8
    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 这篇文章中的登录那部分的设计的引导。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   971 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 22:18 · PVG 06:18 · LAX 15:18 · JFK 18:18
    ♥ Do have faith in what you're doing.