键值存储模型是最简单,也是最方便使用的数据模型,支持简单的键对值的键值存储和提取。根据一个简单的字符串(键)能够返回一个任意类型的数据(值)。
优点:不用为值指定特定的数据类型,能在值里存储任意类型数据。
特点:具有极高的并发读写性能。
键的格式 | 值 |
1、图片或者文件的路径名。 2、根据值的哈希值生成的字符串。 3、REST Web服务调用, 4、SQL查询 | 任何BLOB数据,如字符串、图片、网页或视频 |
类型 | 键 | 值 |
图片名称 | 123.BMP | Biliary image file |
网页URL | http:///www. google.com | HTML of a web page |
文件路径名 | C:/usr/Zhang/file l.doc | WORD document |
MD5哈希 | 8089e36d6iqjfej2ofei®3089r0930r | This is a test. |
REST Web服务调用 | View-peison?person-id=123&fbmiat=xiiil | <Person><id> 123</id></Person> |
SQL查询 | SELECT * FROM STUDENT | * |
数据操作方式:键值存储中存在三种操作:put、get和delete。
数据保存方式
保存方式 | 特点 | |
1 | 临时性 | 1、在内存中保存数据。 2、可以快速进行读和写。 3、数据有可能丢失。 |
2 | 永久性 | 1、在硬盘上保存数据。 2、可以进行较快速的读和写操作。 3、数据不会丢失。 |
3 | 两者兼具 | 1、同时在内存和硬盘上保存数据。 2、可以进行非常快速的读和写操作。 3、保存在硬盘上的数据不会丢失。 |
健值存储产品
主要有Memcached、Redis、Dynamo, Project Voldemort、Tokyo Tyrant、Riak、Scalaries
Memcached | 属于临时性保存类型。 是一个独立的程序或守护进程,基于网络连接方式完成服务。一般用于缓存数据库查询结果。常作为数据库前段Cache使用,或作为服务器共享数据的存储媒介。 | 和共享内存无关,没有共享内存限制。有专门内存分配算法和管理方式,面向稳定的持续连接,并发能力有限制 |
Redis | 属于临时和永久兼具类型。 类似Memcached将整个数据库加载到内存中操作,但通过定期异步操作把数据flush到硬盘保存。 性能出色,每秒可以处理超过10万次读写操作。支持保存List和Set数据结构,支持List各种操作。value最大支持1GB | 缺点: 1、易受到物理内存限制,不能用作海量数据高性能读写 2、没有原生可扩展机制,不具有扩展能力,依赖客户端实现分布式读写 适合场景:较小数据量的高性能操作和运算 |
传统关系型数据库、MongoDB 和Redis比较
比较内容 | 传统关系型数据库 | MongoDB | Redis |
读写速度 | 一般。基于硬盘读写,约束很强 | 较快。基于内存读写,约束很弱 | 最快。主要基于内存读写,约束弱 |
应用范围 | 最广,不能很好处理大数据和高并发访问 | 互联网应用为主,可以处理大数据和高并发访问 | 互联网特定应用为主,擅长处理高响应和高并发的访问的数据 |