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

redis到底是个什么东西?

  •  
  •   liutanyu · 2012-01-05 20:41:14 +08:00 · 7597 次点击
    这是一个创建于 4711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    和hadoop这些mapreduce一样吗?看介绍总也不明白
    23 条回复    1970-01-01 08:00:00 +08:00
    tao_sky
        1
    tao_sky  
       2012-01-05 20:45:30 +08:00
    nosql,KV数据库。
    Livid
        2
    Livid  
    MOD
       2012-01-05 20:45:32 +08:00
    支持多种语言客户端的数据结构服务器。

    比如你可以把一个 Python 的 list 存入 Redis,然后在 Perl 里读出来,依然是一个 list。

    或者你可以让不同的客户端共用一个计数器,而这个计数器就是存储在 Redis 中的一个整数对象。

    Redis 提供了非常多类型的数据结构存储可能。
    virushuo
        3
    virushuo  
       2012-01-05 22:38:47 +08:00
    除了上面说的,redis还有一些特殊之处,它完全保存在内存中,同步到存储。这样可以让redis非常快,也可以取代memcached做对象缓存。使用上的方式也有一些区别,为了防止断电丢失数据,除了依靠aof,还需要做数据同步,redis可以方便在不同节点间同步数据。
    Los
        4
    Los  
       2012-01-05 22:51:47 +08:00
    有 C++ 开发经验的话你会感觉很亲切,对应 STL 的 set,list 之类的
    est
        5
    est  
       2012-01-05 23:17:06 +08:00
    数据结构存储器
    tioover
        6
    tioover  
       2012-01-05 23:23:41 +08:00
    高速的内存数据库
    binux
        7
    binux  
       2012-01-05 23:29:10 +08:00
    目前用到的特性: kv数据库,内存数据库,大量的数据结构,可持久化
    haohaolee
        8
    haohaolee  
       2012-01-05 23:35:34 +08:00
    如果是数据结构存储器,那是不是就是一种序列化解决方案?那和protocol buffers比较呢
    aisk
        9
    aisk  
       2012-01-05 23:50:29 +08:00
    数据结构存储 支持大量的指令对保存的数据类型进行操作,比如对带权重的列表中的某一项权重+1
    reus
        10
    reus  
       2012-01-06 00:38:35 +08:00 via Android
    不是解决序列化问题的,
    能表示的数据结构有限
    容器的键和值都只能是字符串,容器不能嵌套
    aisk
        11
    aisk  
       2012-01-06 00:49:27 +08:00
    @reus “只能是字符串”这个不太认可,这个可以由各个语言的client将各自的数据类型序列化成对应的类型吧
    reus
        12
    reus  
       2012-01-06 08:34:11 +08:00 via Android
    @aisk http://redis.io/topics/data-types 看每个容器类型的第一句,xxx of String
    序列化输出的也是字符串
    aisk
        13
    aisk  
       2012-01-07 13:55:33 +08:00
    @reus 你的意思是没有传统数据库的整形日期型等等,全部以字符串存储占据空间太大?
    reus
        14
    reus  
       2012-01-07 22:17:31 +08:00
    @aisk 不是
    iammutex
        15
    iammutex  
       2012-01-07 22:35:25 +08:00
    aisk
        16
    aisk  
       2012-01-07 22:37:51 +08:00
    @reus 那是?
    j
        17
    j  
       2012-01-07 22:39:32 +08:00
    {}
    reus
        18
    reus  
       2012-01-08 02:31:08 +08:00
    @aisk 意思就只是它的容器只能存字符串。如果容器可以嵌套容器,就更好了,作为一个数据结构服务器就更完美了
    Ricepig
        19
    Ricepig  
       2012-01-08 04:07:27 +08:00
    memcache加上持久化特性

    可以这么理解吧?哈哈
    chloerei
        20
    chloerei  
       2012-01-08 10:14:04 +08:00
    @Ricepig memcache 没有List Hash Sets这些数据结构。
    aisk
        21
    aisk  
       2012-01-08 10:32:53 +08:00
    @reus 这种操作应该通过类似id的方式,将容器中的某个值和其他容器关联起来吧
    reus
        22
    reus  
       2012-01-08 12:28:32 +08:00
    @aisk 是的。不过开销大很多了
    aisk
        23
    aisk  
       2012-01-08 13:02:10 +08:00
    @reus 如果内部实现嵌套其他容器,也是会使用这种类似指针的方式把另外的容器关联进某个容器的值里吧,和这样做并没有什么区别。你说的开销大很多只能是客户端多一次网络连接的开销了,我觉得这并不大,并且可以用pipeline的方式打包发送查询来节省网络开销
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2863 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:15 · PVG 23:15 · LAX 07:15 · JFK 10:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.