Redis从入门到精通

首先需要知道的是,简单的说redis实际上就是一个数据库,和传统数据库不同的是,它存在于内存当中,所以读写速度非常快,所以Redis经常被应用于缓存当中。Redis存在多种数据类型来支持不同的业务场景。
那么我们为什么要使用Redis呢,可以从高性能高并发两个方面来考虑。
高性能
假如用户第一次访问数据库中的数据,数据库是存在硬盘中的,这样是非常慢的,如果下一次将数据存在缓存中的,那么访问速度就会变得很快。如果数据库中的数据改变,只需要同步改变缓存中的数据即可。
(从内存中直接读取数据要比直接从硬盘里读取数据要快的多)
高并发
直接操作缓存能够承受的请求要比操作数据库承受的请求要大的多。我们可以将数据库中的一部分数据转移到缓存中去,这样用户一部分请求就会直接访问缓存而不经过数据库。
为什么我们要用map做缓存,而不用map/guava做缓存呢?
缓存分为本地缓存和分布式缓存。以java为例,使用自带的map和guava实现的是本地缓存。这种缓存的特点就是清亮以及快速,生命随着jvm的销毁而销毁。还有一点就是在
多个实例的情况下,本个实例需要单独保存一个实例,缓存不需要一致性。
使用Redis和memcached 的缓存称为分布式缓存,在多个实例的情况下,多个实例共用一份缓存数据,缓存需要有一致性。缺点就是需要保持redis和memcached的高可用,在架构上就显得复杂很多。

Redis的线程模型:
它采用IO多路复用机制监听多个socket,根据socket上的事件来选择对应的事件处理。
Redis和memcached的区别
1,redis有更加丰富的数据类型。
2,redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启之后能继续使用。而memcached将数据全部存在内存中。
3,redis原生就支持集群。
4,redis是单线程的多路IO复用模型,memcached是多线程非阻塞IO复用网络模型。
如下图:
Redis从入门到精通