wudikua
V2EX  ›  Redis

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

  •  
  •   wudikua · Nov 29, 2013 · 6409 views
    This topic created in 4563 days ago, the information mentioned may be changed or developed.
    如果把Book看做关系数据库里面的表名,name看作是列名,直接存KEY和存在VALUE的HASHTABLE的KEY里各有什么特长啊。
    8 replies    1970-01-01 08:00:00 +08:00
    skydiver
        1
    skydiver  
       Nov 29, 2013
    用hSet效率高一些
    peonone
        2
    peonone  
       Nov 29, 2013
    hset相当于是2级hash
    如果book:1:name数量比较多,还是用hset合适
    peonone
        3
    peonone  
       Nov 29, 2013
    redis和关系型数据库的差距比较大,不要用关系数据库的概念去对应
    xia0ta0
        4
    xia0ta0  
       Nov 29, 2013
    推荐hset,set适合存储离散的数据
    如果想得到一本书有name和author属性,使用set,get需要存储或者读取两次;使用set的存储的数据可以用hgetall一次读出来。
    好处还有很多,推荐看一下redis作者写的一个仿reddit Hacknews的程序lamernews
    https://github.com/antirez/lamernews
    xia0ta0
        5
    xia0ta0  
       Nov 29, 2013
    写错了。。。 是使用hset的存储的数据可以用hgetall一次读出来
    oppressed6370
        6
    oppressed6370  
       Nov 29, 2013 via iPhone
    好像用hset比较多
    mckelvin
        7
    mckelvin  
       Nov 30, 2013
    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
        8
    wudikua  
    OP
       Nov 30, 2013
    @mckelvin 那一本书的 N个chapter 适不适合存 hset呢,比如 hset(Book:1 chapter:1, XXOO); 一章的内容大概5000字。
    哎。现在我好多都是存的key,可能被phpRedisAdmin误导了,因为那个可以自动分割 “:”变得比较可视化,我还以为redis推荐这么做呢,也是受http://www.searchdatabase.com.cn/showcontent_52657.htm 这篇文章中的登录那部分的设计的引导。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3794 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 473ms · UTC 05:05 · PVG 13:05 · LAX 22:05 · JFK 01:05
    ♥ Do have faith in what you're doing.