目录

 

一、概述

二、redis的特性

2.1、存储结构

2.2、内存存储与持久化

2.3、功能丰富

2.4、简单稳定

三、redis支持的键值数据类型

四、为什么使用redis

五、redis与其他key-value存储有什么不同


一、概述

  1. Redis之父:Salvatore Sanfilippo一名意大利程序员,大家更习惯称呼他 Antirez。
  2. Redis即REmote Dictionary Server(远程字典服务器)。
  3. REmote Dictionary Server(Redis)是由Salvatore Sanfilippo写的key-value存储系统。
  4. 2008年,意大利一家创业公司退出一款基于Mysql的网站实时统计系统LLOOGG,而MySQL的性能不足以支持LLOOGG,Merzia公司创始人为LLOOGG量身定制了一个数据库,即Redis。
  5. VMware公司从2010年开始赞助Redis的开发,Salvatore Sanfilippo和Pieter Noordhuis分别于同年加入VMware全职开发Redis。
  6. Redis是一个开源的使用ANSI C语言编写、遵循BSD协议,支持网络、基于内存亦可持久化的日志型、key-Value数据库,并提供多种语言的API。
  7. 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
  8. redis的代码托管于GitHub上,2015年Redis发布了3.0.0的正式版。(开源)。

二、redis的特性

2.1、存储结构

  1. 键值对的存储形式,dict["key"]="value";dict为字典结构变量。“key”为键,“value"为值。
  2. redis以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。
  3. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

2.2、内存存储与持久化

Redis数据库中的所有数据都保存在内存中,内存的读写速度远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势。一台普通笔记本电脑上,redis可以一秒读写超过100k个键值(key-value)

数据存储在内存中的问题:程序退出后内存中的数据会丢失。redis的持久化功能能解决此问题。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

2.3、功能丰富

  • Redis提供数据开发、亦支持缓存、队列系统。
  • Redis可为每个键(key-value)设置生存时间(Time To Live,TTL)。生存时间可自动删除。
  • 键的生存时间与redis的性能配合可作为缓存系统来使用。
  • 作为缓存系统,redis可限定数据占用的最大内存空间,在数据到达空间限制后可以安照一定的规则自动淘汰不需要的键。
  • redis的列表类型键可以实现队列并支持阻塞式读取。

 

2.4、简单稳定

  • redis的存储结构简单使得程序与redis的交换简单。
  • 数据读写操作简单。
  • c语言开发,代码量少。
  • 提供几十种不同编程语言的客户端库。这些库中封装了redis的命令使得在程序中与redis进行交换变得更加容易。
  • redis是开源的,良好的开发氛围和严谨的版本发布使得redis的稳定版本非常可靠。

 

三、redis支持的键值数据类型

  1. 字符串类型
  2. 散列类型
  3. 列表类型
  4. 集合类型
  5. 有序类型

四、为什么使用redis

  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  3. 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  4. 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

五、redis与其他key-value存储有什么不同

  • Redis复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。