# Reds简介
一个开源的key-vole,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数
据结构,如字符串( stings),散列( hashes),列表(lsts),集合(sets),有序集合( sorted sets)。 Redis使用C语言开发,支持的客户端语言也非常丰富,如C、C#、C++、 object-c、PHP、 Python、Java等。 Redis支持master-slave(主-从)模式应用,支持数据的持久化,可以将内存中的数据存储在硬盘中,重启、断电的时候并不会
丢失数据。
## Redis特点
①所有数据存储在内存中,高速读写
②提供丰富多样的数据类型: stnng、ist、hash、set、 sorted set、bimp
③提供了AOF和RDB两种数据的持久化保存方式,保证了Rcds重启后数据不丢失
④ Redis的所有操作都是原子盏的,还支持对几个操作合并后的原子性操作,支持事务
通常我们都把数据存到关系型数据库中,但为了提升应用的性能,我们应该把访频率高且不会经常变动的数据缓存到内存中。Redis没有像 MYSQL这类关系型数据库郊样强大的查询功能,需要考虑如何把关系型数据库中的数据,合理的对应到缓存的 key value款据结柳中
:-: **Redis应用逻辑图**
:-: ![](https://box.kancloud.cn/9123be6636bfee1cfb6b95bdddfe0760_433x220.png)
## Redis与其他key-value存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。