`
ssxxjjii
  • 浏览: 938648 次
  • 性别: 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中的Node采用块链组织,精简内存,优化查找效率 •Node数据项可自定义Mask表,支持多种过滤操作 •支持redo-log,数据持久化,非Cache模式 •分布式,主从同步 •读写分离,写...

    unity内存优化

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

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

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

    redis基础知识-参考

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

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

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

    大数据技术之高频面试题.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. **第六章...

    C#完全手册

    - LINQ to Objects:学习如何在内存数据集上使用LINQ,进行过滤、排序、分组等操作。 - LINQ to SQL:理解如何将LINQ与数据库操作结合,生成高效的SQL查询。 - LINQ to XML:结合XML处理,使用LINQ进行XML数据的...

    .Net面试试题集

    - 排序与查找:了解List<T>.Sort()、BinarySearch()等方法,以及何时使用排序数据结构如SortedSet或SortedList<TKey,TValue>。 7. **设计模式**: - 工厂模式、单例模式、观察者模式、装饰器模式等常见设计模式的...

    mysql面试题,提前熟悉,提前准备,备战面试

    - 常见分区类型:Range(范围)、List(列表)、Hash(哈希)和Key(键值)。 8. 角色(Role)和权限管理: - 用户账户管理:GRANT和REVOKE命令分配和回收权限。 - 角色:一组权限的集合,方便权限管理。 9. ...

    mongodb-linux-x86_64-ubuntu1604-4.0.18.tgz

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

    redis-6.0.5.tar.gz

    7. **数据类型**:Redis支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。每种类型都有其特定的操作命令,比如`LPUSH`向列表头部添加元素,`SADD`向集合...

    C#面试试题(经典)

    - 集合与泛型:List、Dictionary<TKey, TValue>等,以及泛型的优势。 - 文件和流操作:读写文件、网络流、内存流等。 4. **高级特性**: - Lambda表达式和 LINQ:用于简化查询和数据操作。 - 动态编程:动态...

    分布式键值系统-Tair1

    - **rdb**:同样定位为缓存,使用redis的内存存储结构,支持丰富的数据结构如list、hash、set、sortedset。 - **ldb**:定位于高性能存储,基于levelDB,并可选配mdb cache加速,支持k/v和prefix操作,未来计划支持...

    Java通过POI读取Excel遍历数据,批量生成word文档

    在IT行业中,尤其是在企业自动化和数据处理领域...此外,对于大型Excel文件,应使用低内存模式以避免内存溢出。在处理Word模板时,也可以使用模板引擎如FreeMarker或Velocity,它们能提供更强大的模板语法和控制结构。

    数据结构(C#语言版)

    数据结构在各种场景下都有应用,例如数据库索引、网页爬虫、游戏引擎、机器学习模型等。理解和熟练掌握数据结构对于编写高效、可维护的C#代码至关重要。 总的来说,“数据结构(C#语言版)”这份资料涵盖了C#环境下...

    NET面试题目

    - List、ArrayList、LinkedList等集合类型的区别和应用场景。 - Dictionary<TKey, TValue>、HashSet、Queue、Stack等数据结构的理解和使用。 - 对象池(Object Pool)的设计模式及其在提高性能中的作用。 4. **...

    易学易懂C#教程-B

    集合如List和Dictionary<TKey, TValue>提供了更灵活的数据存储方式。这部分会讲解数组的声明、初始化和操作,以及常用集合类的使用。 7. 文件与流:C#提供了丰富的文件操作API,包括读写文件、追加数据等。流是处理...

    完整讲述C sharp 《C# 完全手册》

    - 泛型(Generic):提高代码重用性和类型安全性,如List和Dictionary<TKey, TValue>。 - LINQ(Language Integrated Query):集成查询语言,使数据查询更加简洁直观。 - 动态类型(dynamic):允许在编译时不...

    C#版数据结构

    .NET框架提供了内置的`System.Collections`和`System.Collections.Generic`命名空间,其中包含了多种预定义的数据结构,如`List<T>`(动态数组)、`Dictionary<TKey, TValue>`(哈希表)和`LinkedList<T>`(链表)...

Global site tag (gtag.js) - Google Analytics