Redis 快速入门

161 阅读3分钟

redis 简介

Redis是当前比较热门的NOSQL系统之一,是一个高性能的key-value类型的内存数据库,因为是纯内存操作,Redis的性能非常出色,是已知性能最快的Key-Value DB。它还可以将存储在内容中的数据持久化到硬盘中,防止数据丢失。

redis 优势

  • 速度快,因为数据存在内存中,读的速度是 110000 次 /s, 写的速度是 81000 次 /s

  • 支持丰富数据类型,支持string,list,set,hash,zset;

  • 支持事务,操作都是原子性,对数据的更改要么全部执行,要么全部不执行

  • 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

  • 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

  • 支持数据的备份,即主从复制模式的数据备份

redis 和 memcache的区别

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘

4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10

5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从

6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)

7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof,rdb恢复

8、Redis支持数据的备份,即master-slave模式的数据备份。 

redis 为什么效率高

  • 单线程,保证了每个操作得原子性,避免了线程上下文的切换和竞争

  • 是内存中的,使用内存进行数据的读写,可以减少磁盘的 io

  • 另外数据结构也帮了很大的忙,全程使用的是hash结构,读取速度快

  • Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大

Redis 单线程如何处理那么多的并发客户端连接

采用的是IO多路复用技术

redis 采用网络IO多路复用技术来保证在多连接的时候,系统的高吞吐量。 

 多路-指的是多个socket连接,复用-指的是复用一个线程。多路复用主要有三种技术:select,poll,epoll。epoll是最新的也是目前最好的多路复用技术。 

 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。

redis 适用场景

  1. 数据结构不固定的半结构化数据

  2. 读写请求数量大且实时性要求高

  3. 后台RDB数据库压力大,需要缓存的情况

  4. 数据结构复杂,需要与应用程序内数据结构相对应的情况

redis 数据类型

String(字符串) , Hash(字典), List(列表), set(集合) , zset(有序集合)