Heim  >  Artikel  >  Datenbank  >  Redis研究(一)—简介

Redis研究(一)—简介

WBOY
WBOYOriginal
2016-06-07 16:12:041412Durchsuche

Redis是一个开源的高性能键对数据库。它通过提供多种键数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。 1.1历史和发展 2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL

Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。

1.1历史和发展

2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL的低性能,亲自定做一个数据库,并于2009年开发完成,这个就是Redis。

短短几年,用户数据量猛增。国内如新浪微博、街旁和知乎等,国外如GitHub、暴雪等,都是Redis的用户。

Redis的代码托管在GitHub上,开发十分活跃。

1.2特性


1.2.1存储结构

Redis是REmote DIctionary Server(远程字典服务器)的缩写,他以字典结构存储数据,并允许其他应用通过TCP协议读写字典里的内容,Redis字典中的键值除了可以是字符串外,还可以是其他数据类型,比如

字符串类型
散列类型

列表类型

集合类型

有序集合类型

这种字典形式的存储结构与常见的MySQL等关系数据库的二维表形式的存储结构有很大的差异。

(1)支持开发者可以将程序中的数据直接映射到Redis中

(2)对不同数据类型提供了非常方便的操作方式,如使用集合类型存储文章标签,Redis可以对标签进行如交集、并集这样的集合运算操作。

1.2.2内存存储与持久化

Redis数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,性能明显优势,无时延情况下Redis可以在一秒内读写超过100000个键值。

将数据存储在内存中也有问题,程序退出后内存中的数据会丢失,但是,Redis提供了对持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。

1.2.3功能丰富

用作缓存、队列系统等。

Redis可以为每个键设置生存时间(TTL),生存时间到期后键会自动被删除,这一功能配合出色的性能让Redis可以作为缓存系统来使用,成为了缓存系统Memcached的有力竞争者。

性能上:Redis是单线程模型,而Memcached支持多线程,多核服务器上后者性能好点。

但是Redis大多数情况下足够优异都不会成为瓶颈,如果需要用到高级的数据类型或者持久化功能等,Redis会更好点。

作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。

除此之外,Redis的列表类型键可以实现队列,并且支持阻塞式读取,可以很容易实现一个高性能的优先队列。同时在更高层面上,Redis还支持“发布 /订阅”的消息模式,可以基于此构建聊天室等系统。

1.2.4简单稳定

Redis提供一百多中命令,但是常用的就十几种。

Redis提供了几十种不同编程语言的客户端库,很好的封装了Redis的命令,使得在程序中与Redis交互变得更容易。

Redis使用C语言开发,代码量只有30000多行,易懂易修改,好维护。

Redis是开源的,稳定版本非常可靠。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn