`
ssxxjjii
  • 浏览: 948666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

key-list类型内存数据引擎介绍及使用场景

 
阅读更多

http://blog.nosqlfan.com/html/1352.html

 

“互联网数据目前基本使用两种方式来存储,关系数据库或者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在各个应用场景中的实际使用情况与大家分享.

参考:

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/

分享到:
评论

相关推荐

    Memlink是一个高性能、持久化、分布式的Key=>List/Queue数据引擎

    高性能内存数据引擎 - **内存数据存储**:所有数据均存储于内存中,确保了高速访问。 - **块链组织**:采用块链结构来管理List中的节点,既节省内存又提高了查找效率。 - **自定义Mask表**:支持根据特定需求定制...

    redis命令基础教程

    - **丰富的数据结构**:除了基本的 Key-Value 存储外,Redis 还提供了 List、Set、Sorted Set 和 Hash 等多种数据结构的支持。 - **主从复制**:支持 Master-Slave 模式的数据备份,提高系统的可用性和扩展性。 #...

    unity内存优化

    - 使用适当的数据结构:根据数据访问模式选择合适的数据结构,如List、Dictionary<TKey, TValue>等。 9. **预加载策略**: - 智能预加载:预测玩家可能到达的场景或区域,提前加载相关资源,避免突然的内存压力。...

    50丨索引:如何在海量数据中快速查找某个数据?1

    1. **数据类型**:结构化数据如MySQL中的数据适合使用B+树等索引结构,而非结构化数据如搜索引擎中的文本则需要预处理,提取关键词后再构建倒排索引。 2. **数据动态性**:静态数据只需考虑查询效率,动态数据(即...

    架构师系列书籍--Redis实战

    通过以上内容,我们可以看到Redis不仅是一款强大的Key-Value存储系统,而且具备丰富的数据类型和命令集,可以满足多种应用场景的需求。无论是作为缓存层还是实现复杂的数据结构和逻辑,Redis都是一个值得深入学习和...

    redis-笔记

    通过上述介绍,我们可以看出Redis不仅是一个简单的内存数据库,更是一个强大的工具箱,提供了丰富的功能来满足不同场景的需求。掌握Redis的核心特性和应用场景,对于提升系统的性能和可靠性具有重要意义。

    redis基础知识-参考

    8. Redis 的高性能秘诀:Redis 的高性能秘诀是通过将数据存储在内存中,并使用高效的存储引擎来实现的。 9. Redis 的高可用性:Redis 的高可用性是通过主从同步机制来实现的。当主服务器宕机时,可以自动切换到从...

    TRedis高性能缓存及持久化方案.pdf

    - **数据过期**:自动清理过期数据,优化内存使用。 - **快速启动**:无需加载RDB或AOF,启动速度快。 - **物理备份**:通过文件拷贝快速备份Redis数据。 4. **RocksDB特性**: - **源自LevelDB**:Rocksdb是...

    Java版数据结构与算法视频教程地址.txt

    - 定义:数组是一种基本的数据结构,它将具有相同类型的元素按照顺序存储在连续的内存空间中。 - 特点:访问速度快(O(1)),但插入删除操作较慢(O(n))。 - 应用场景:适用于频繁查询而较少改变数据的情况。 2...

    数据结构与算法在实际项目当中的运用

    对于实时性要求高的系统,可能需要借助内存数据结构,如Redis中的数据结构,以提高读写速度。 总的来说,理解和熟练运用数据结构与算法是提升项目质量和效率的关键。通过阅读《数据结构与算法实战》这样的书籍,...

    紅皮書c#2008高級編程 最新版

    - 介绍了.NET Framework提供的各种集合类型,如List、Dictionary<TKey, TValue>等。 - 讨论了不同集合类型的特点和适用场景。 - 提供了大量实例来展示如何使用集合类。 11. **语言集成查询(第11章)** - 介绍...

    大数据技术之高频面试题.docx

    * Spark是一个基于内存的数据处理引擎,可以处理大量数据。 * Spark提供了多种数据处理API,包括Java、Scala、Python和R等。 * Spark有多种用途,包括数据处理、数据分析和机器学习等。 Redis * Redis是一种基于...

    深入.NET平台和C#编程.NET平台和C#编程4~9章PPT课件

    - 集合类:List、Dictionary<TKey, TValue>等 - 链式操作符和扩展方法 5. **第五章:异常处理** - 异常类层次结构 - try-catch-finally语句的使用 - 自定义异常类 - 使用using语句进行资源管理 6. **第六章...

    45道阿里Redis面试题这四大知识点你又知道多少.docx

    根据给定文件的信息,本文将围绕Redis的基础概念、集群配置及使用、分布式锁以及与MySQL结合的应用场景等四大核心知识点进行深入探讨。 ### 一、Redis基础概念 #### 1. Redis简介及其优缺点 - **定义**:Redis...

    redis实战中文 pdf

    #### 五、Redis数据类型及操作 ##### 2.2 strings类型及操作 - **set**: 设置键值。 - **setnx**: 只有当键不存在时才设置键值。 - **setex**: 设置键值及其过期时间。 - **setrange**: 修改键值的一部分。 - **...

    混合存储产品

    Redis是一种高性能的内存Key-Value数据库,它以单线程无锁的方式运行,支持多种数据类型如字符串(string)、列表(list)、哈希(hash)、集合(set)和有序集合(zset)。同时,Redis还具备丰富的特性,比如支持...

    mongodb-linux-x86_64-ubuntu1604-4.0.18.tgz

    MongoDB 是一个高性能、开源、无模式的文档型数据库,被广泛应用于Web应用程序、数据分析、内容管理系统等场景。它支持多种编程语言,如JavaScript、Python、Java、C++等,提供了一个灵活的数据模型,便于数据的存储...

    ActionScript_Flex完全学习教程

    - 案例分析:具体应用场景及代码示例。 - **游戏开发基础**: - 游戏引擎选择:如Flixel等。 - 物理引擎集成:如Box2D等。 - 游戏逻辑实现:角色控制、碰撞检测等。 - **Flex从入门到实践**: - 实战项目:从...

    SSDB详细解说

    SSDB是一个由C/C++编写的高性能NoSQL数据库,专为处理大量集合数据而设计,支持zset(排序集合)、map(哈希)、kv(键值对)和list(列表)等丰富的数据结构。其目标是作为Redis的替代品或补充,特别是在面对十亿...

Global site tag (gtag.js) - Google Analytics