Redis是一个开源的,内存中的数据存储结构,它可以用作数据库,缓存和消息中间件。
利用内存保存数据,减少IO操作。
简介
Redis是完全源免费的,遵守BSD协议,是一个高性能的key-values数据库。
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-values类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的备份。(master-slave模式,主从设备模式。核心思想是基于分而治之的思想,将一个原始任务分解为若干个语义等同的子任务,并由专门的工作者线程来并行执行这些任务,原始任务的结果是通过整合各个子任务的处理结果形成的。)
Redis优势
- 性能极高-Redis读的速度是110000次/s,写的速度是81000/s。
- 丰富的数据类型-Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作。
- 原子-Redis的所有操作都是原子性的,意思就是要么成功执行要么失败全部不执行。单个操作时原子性的,多个操作也支持事务,即原子性,通过MULT和EXEC指令包起来。(指令:http://www.runoob.com/redis/transactions-multi.html)
- 丰富的特性-Redis还支持publish/subscribe,通知,key过期等特性。
Redis与其他key-values存储的不同?
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速度读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
数据类型
String(字符串):
- String是redis最基本的类型,一个key对应一个values。
- String类型是二进制安全的,意思是redis的String可以包含任何数据,比如JPG图片或序列化的对象。
- String类型是Redis最基本的数据类型,一个键最大能存储512MB。
Hash:
- Redis hash是一个键值对集合。
- Redis hash是一个String类型的field和values的映射表,hash特别适合用于存储对象。
- 每个hash可以存储2^32-1键值对(40多亿)。
List(列表):
- Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
- 列表最多可存储2^32-1元素。
Set(集合):
- Redis的set是String类型的无序集合。
- 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
- 集合中最大成员数为2^32-1.
zset(sorted set,有序集合):
- Redis zset和set一样也是String类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- zset的成员是唯一的,但分数(score)却可以重复。
学习参考;https://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html
https://www.cnblogs.com/pyyu/p/9467279.html