zoukankan      html  css  js  c++  java
  • key-list类型内存数据引擎介绍及使用场景

    “互联网数据目前基本使用两种方式来存储,关系数据库或者key value。但是这些互联网业务本身并不属于这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要转换成一种多行记录的形式,这种形式存在很多冗余数据,每一行需要存储一些重复信息。如果用key value存储则修改和删除比较麻烦,需要将全部数据读出再写入”—sina @timyang

    key-value实现list功能

    如果用key-value中的value存储list,只能实现最简单的列表功能(按照id或时间先后排序,例如使用memcache的append或prepend协议).其他list操作只能靠客户端操作,性能很差,如果数据量较大,操作时间是无法接受的,并发也会遇到巨大挑战).

    我们目前在使用的mighty(内部研发)持久层框架对list的操作就是基于memcache的append prepend协议实现对id列表的简单操作,满足了大多简单列表的场景.缺点是当影响排序的更新操作较多时cache的命中率会下降的很厉害.

    什么是key-list

    key-list系统key对应的"value”是一个list(eg.set list),可以对list中的单个item进行操作,理想的key-list需要如下特点:

    1.list可以是海量的、且操作性能高效

    2.list是可以是有序的、且可动态调整顺序

    使用场景

    论坛中的主题列表、回复列表

    微博中的用户关注列表、用户feed列表、用户关注feed列表

    最近访问列表

    集合操作:求交集 并集 差集(sdiff sinter sunion)

    好友推荐

    排行榜

    开源的key-list系统 

        redis

    Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain stringshasheslists,sets and sorted sets.

    redis也被我列入到key-list系统中,是因为redis是支持list操作的,正如timyang在博客中说的:对Redis的作用的不同解读决定了你对Redis的使用方式.

    目前sina alibaba digg等网站已经在使用redis.

        memlink

    Memlink 是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎.

    更多介绍详见 :

    http://www.infoq.com/cn/news/2010/11/tianya-memlink 

    http://code.google.com/p/memlink/

    目前在天涯的多个产品中使用.

    后续我将继续对redis在各个应用场景中的实际使用情况与大家分享.

    相关阅读:

    memlink性能测试、与redis,mysql的性能测试对比

    参考:

    http://www.infoq.com/cn/news/2010/11/tianya-memlink

    http://timyang.net/data/redis-misunderstanding/

    http://timyang.net/web/pagination/comment-page-1/

    http://redis.io

    http://code.google.com/p/memlink/

  • 相关阅读:
    CF 234 C Weather(粗暴方法)
    给工作赋予的新意义——Leo鉴书78
    获取集合的方法
    VS 统计代码行数
    , ,
    指针的删除动作
    C++ 名称空间
    boost::token_compress_on
    指针与引用
    容器的end()方法
  • 原文地址:https://www.cnblogs.com/94julia/p/4500852.html
Copyright © 2011-2022 走看看