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 strings, hashes, lists, 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/

转载于:https://www.cnblogs.com/redcreen/archive/2011/02/27/1966328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Key-Value数据库是一种NoSQL(非关系型数据库)模型,数据按照键值对的形式进行组织、索引和存储。它在处理大数据时有很多优势,并且被广泛应用于不同的系统和场景。以下是一些常见的Key-Value数据库: 1. RocksDB:RocksDB是一个高性能、可嵌入的Key-Value存储引擎,适用于各种应用场景。它具有快速的写入和读取速度,并且可以处理大量的数据。 2. LevelDB:LevelDB是Google开发的一个持久化键值存储库,具有高性能和可靠性。它支持快速的写入和读取操作,并且能够处理大规模的数据集。 3. Memcached:Memcached是一种分布式内存对象缓存系统,常用于缓存常用的查询结果集或其他需要频繁读取的数据。它可以提供快速的数据访问速度,并且具有高可扩展性。 4. Redis:Redis是一个高性能的内存键值数据库,支持各种数据结构和功能。它可以用作缓存、消息队列、分布式锁等,具有快速的读写操作和高可用性。 5. DynamoDB:DynamoDB是亚马逊AWS提供的一种高度可扩展的NoSQL数据库服务,适用于处理大规模数据和高并发访问。 6. Riak:Riak是一种分布式键值数据库,具有高可用性和可扩展性。它适用于存储大量的松散关联的数据,并且可以在多个节点上进行分布式存储和处理。 7. Couchbase:Couchbase是一个面向文档的NoSQL数据库,支持键值和文档数据模型。它具有高性能、可扩展性和灵活性,适用于各种应用场景。 8. MongoDB:MongoDB是一个面向文档的NoSQL数据库,支持键值和文档数据模型。它具有灵活的数据模型和丰富的查询功能,适用于复杂的数据结构和大规模的数据存储。 9. Cassandra:Cassandra是一种高度可扩展的分布式键值数据库,具有强大的数据复制和容错性能。它适用于需要高可用性和可扩展性的大规模数据存储。 这些都是一些常见的Key-Value数据库,它们在不同的场景和需求中都有各自的优势和适用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [大数据时代常用的几类Key-Value(NoSQL)数据库](https://blog.csdn.net/gunri_tianjin/article/details/83215422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [RebornDB:下一代分布式Key-Value数据库](https://download.csdn.net/download/weixin_38656462/14959009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值