1:Redis介绍
Redis是使用C语言开发的数据, 与传统数据不同的是Redis的数据存在于内存中,读写速度非常快,因此被应用于缓存方向;
Redis除了做缓存外,还经常用户来做分布式锁,或者消息队列;
Redis提供多种数据类型来支持不同的业务场景;
Redis还支持 持久化、多种集群方案、 事务、Lua脚本;
2: 分布式缓存常见的技术选型方案有哪些?
Memcached (基本不用)和 Redis (基本使用)
分布式缓存主要解决的是单机缓存的容量受服务器限制并且无法保存通用的信息。
因为,本地缓存只在当前服务里有效,比如如果你部署了两个相同的服务,他们两者之间的缓存数据是无法共同的。
3:Redis 和 Memcached 的区别和共同点
共同点 :
1:都是基于内存的数据库,一般都用来当做缓存使用。
2:都有过期策略。
3:两者的性能都非常高。
区别:
1:Redis 支持更丰富的数据类型(支持更复杂的应用场景)。Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
Memcached 只支持最简单的 k/v 数据类型。
2:Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memecache 把数据全部存在内存之中。
3:Redis 有灾难恢复机制。 因为可以把缓存中的数据持久化到磁盘上。
4:Redis 在服务器内存使用完之后,可以将不用的数据放到磁盘上。但是,Memcached 在服务器内存使用完之后,就会直接报异常。
5:Redis 目前是原生支持 cluster 模式的;Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;
6:Redis 使用单线程的多路 IO 复用模型。 (Redis 6.0 引入了多线程 IO );Memcached 是多线程,非阻塞 IO 复用的网络模型;
7:Redis 支持发布订阅模型、事务、Lua 脚本等功能,而 Memcached 不支持。
8:Redis 同时使用了惰性删除与定期删除,而Memcached过期数据的删除策略只用了惰性删除;
4:缓存数据的处理流程是怎样的?
1:如果用户请求的数据在缓存中就直接返回。
2:缓存中不存在的话就看数据库中是否存在。
3:数据库中存在的话就更新缓存中的数据,并返回数据。
4:数据库中不存在的话就返回空数据。
5: 为什么要用 Redis/为什么要用缓存?
假如用户第一次访问数据库中的某些数据的话,这个过程是比较慢,毕竟是从硬盘中读取的。
而用户访问的数据属于高频数据并且不会经常改变的话,那么我们就可以很放心地将该用户访问的数据存在缓存中。
注意:如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据;
MySQL 这类的数据库的 QPS(Query Per Second) 大概都在 1w 左右(4 核 8g),
但是使用 Redis 缓存之后很容易达到 10w+,甚至最高能达到 30w+。