9.3.2 键值存储

2025-06-14 19:47:00 更新

键值存储模型是最简单,也是最方便使用的数据模型,支持简单的键对值的键值存储和提取。根据一个简单的字符串(键)能够返回一个任意类型的数据(值)。

优点:不用为值指定特定的数据类型,能在值里存储任意类型数据。

特点:具有极高的并发读写性能。

键的格式

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

读写速度

一般。基于硬盘读写,约束很强

较快。基于内存读写,约束很弱

最快。主要基于内存读写,约束弱

应用范围

最广,不能很好处理大数据和高并发访问

互联网应用为主,可以处理大数据和高并发访问

互联网特定应用为主,擅长处理高响应和高并发的访问的数据