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/
相关推荐
高性能内存数据引擎 - **内存数据存储**:所有数据均存储于内存中,确保了高速访问。 - **块链组织**:采用块链结构来管理List中的节点,既节省内存又提高了查找效率。 - **自定义Mask表**:支持根据特定需求定制...
- **丰富的数据结构**:除了基本的 Key-Value 存储外,Redis 还提供了 List、Set、Sorted Set 和 Hash 等多种数据结构的支持。 - **主从复制**:支持 Master-Slave 模式的数据备份,提高系统的可用性和扩展性。 #...
- 使用适当的数据结构:根据数据访问模式选择合适的数据结构,如List、Dictionary<TKey, TValue>等。 9. **预加载策略**: - 智能预加载:预测玩家可能到达的场景或区域,提前加载相关资源,避免突然的内存压力。...
1. **数据类型**:结构化数据如MySQL中的数据适合使用B+树等索引结构,而非结构化数据如搜索引擎中的文本则需要预处理,提取关键词后再构建倒排索引。 2. **数据动态性**:静态数据只需考虑查询效率,动态数据(即...
通过以上内容,我们可以看到Redis不仅是一款强大的Key-Value存储系统,而且具备丰富的数据类型和命令集,可以满足多种应用场景的需求。无论是作为缓存层还是实现复杂的数据结构和逻辑,Redis都是一个值得深入学习和...
通过上述介绍,我们可以看出Redis不仅是一个简单的内存数据库,更是一个强大的工具箱,提供了丰富的功能来满足不同场景的需求。掌握Redis的核心特性和应用场景,对于提升系统的性能和可靠性具有重要意义。
8. Redis 的高性能秘诀:Redis 的高性能秘诀是通过将数据存储在内存中,并使用高效的存储引擎来实现的。 9. Redis 的高可用性:Redis 的高可用性是通过主从同步机制来实现的。当主服务器宕机时,可以自动切换到从...
- **数据过期**:自动清理过期数据,优化内存使用。 - **快速启动**:无需加载RDB或AOF,启动速度快。 - **物理备份**:通过文件拷贝快速备份Redis数据。 4. **RocksDB特性**: - **源自LevelDB**:Rocksdb是...
- 定义:数组是一种基本的数据结构,它将具有相同类型的元素按照顺序存储在连续的内存空间中。 - 特点:访问速度快(O(1)),但插入删除操作较慢(O(n))。 - 应用场景:适用于频繁查询而较少改变数据的情况。 2...
对于实时性要求高的系统,可能需要借助内存数据结构,如Redis中的数据结构,以提高读写速度。 总的来说,理解和熟练运用数据结构与算法是提升项目质量和效率的关键。通过阅读《数据结构与算法实战》这样的书籍,...
- 介绍了.NET Framework提供的各种集合类型,如List、Dictionary<TKey, TValue>等。 - 讨论了不同集合类型的特点和适用场景。 - 提供了大量实例来展示如何使用集合类。 11. **语言集成查询(第11章)** - 介绍...
* Spark是一个基于内存的数据处理引擎,可以处理大量数据。 * Spark提供了多种数据处理API,包括Java、Scala、Python和R等。 * Spark有多种用途,包括数据处理、数据分析和机器学习等。 Redis * Redis是一种基于...
- 集合类:List、Dictionary<TKey, TValue>等 - 链式操作符和扩展方法 5. **第五章:异常处理** - 异常类层次结构 - try-catch-finally语句的使用 - 自定义异常类 - 使用using语句进行资源管理 6. **第六章...
根据给定文件的信息,本文将围绕Redis的基础概念、集群配置及使用、分布式锁以及与MySQL结合的应用场景等四大核心知识点进行深入探讨。 ### 一、Redis基础概念 #### 1. Redis简介及其优缺点 - **定义**:Redis...
#### 五、Redis数据类型及操作 ##### 2.2 strings类型及操作 - **set**: 设置键值。 - **setnx**: 只有当键不存在时才设置键值。 - **setex**: 设置键值及其过期时间。 - **setrange**: 修改键值的一部分。 - **...
Redis是一种高性能的内存Key-Value数据库,它以单线程无锁的方式运行,支持多种数据类型如字符串(string)、列表(list)、哈希(hash)、集合(set)和有序集合(zset)。同时,Redis还具备丰富的特性,比如支持...
MongoDB 是一个高性能、开源、无模式的文档型数据库,被广泛应用于Web应用程序、数据分析、内容管理系统等场景。它支持多种编程语言,如JavaScript、Python、Java、C++等,提供了一个灵活的数据模型,便于数据的存储...
- 案例分析:具体应用场景及代码示例。 - **游戏开发基础**: - 游戏引擎选择:如Flixel等。 - 物理引擎集成:如Box2D等。 - 游戏逻辑实现:角色控制、碰撞检测等。 - **Flex从入门到实践**: - 实战项目:从...
SSDB是一个由C/C++编写的高性能NoSQL数据库,专为处理大量集合数据而设计,支持zset(排序集合)、map(哈希)、kv(键值对)和list(列表)等丰富的数据结构。其目标是作为Redis的替代品或补充,特别是在面对十亿...