1、什么数据能够放缓存
- 不须要实时更新可是又极其消耗数据库的数据。好比网站上商品销售排行榜,这种数据一天统计一次就能够了,用户不会关注其是不是实时的。
- 须要实时更新,可是更新频率不高的数据。好比一个用户的订单列表,他确定但愿可以实时看到本身下的订单,可是大部分用户不会频繁下单。
在某个时刻访问量极大并且更新也很频繁的数据。这种数据有一个很典型的例子就是
秒杀,在秒杀那一刻,可能有N倍于平时的流量进来,系统压力会很大。可是这种数据使用的缓存不能和普通缓存同样,这种缓存必须保证不丢失,不然会有大问题。
2、为何redis这么快
- 一、彻底基于内存,绝大部分请求是纯粹的内存操做,很是快速。数据存在内存中,相似于HashMap,HashMap的优点就是查找和操做的时间复杂度都是O(1);
- 二、数据结构简单,对数据操做也简单,Redis中的数据结构是专门进行设计的;
- 三、采用单线程,避免了没必要要的上下文切换和竞争条件,也不存在多进程或者多线程致使的切换而消耗 CPU,不用去考虑各类锁的问题,不存在加锁释放锁操做,没有由于可能出现死锁而致使的性能消耗;
- 四、使用多路I/O复用模型,非阻塞IO;
- 五、使用底层模型不一样,它们之间底层实现方式以及与客户端之间通讯的应用协议不同,Redis直接本身构建了VM 机制 ,由于通常的系统调用系统函数的话,会浪费必定的时间去移动和请求;
3、为何使用缓存
redis缓存,为何要用缓存呢,举个例子,假如系统中有2千万用户信息,用户信息基本固定,一旦录入不多变更,
那么你每次加载全部用户信息时,若是都要请求数据库,数据库编译并执行你的查询语句,这样效率就会低下不少,针对这种信息不常常变更而且数据量
较大的状况,一般作法,就是把他加入缓存,每次取数前先去判断,若是缓存不为空,那么就从缓存取值,若是为空,再去请求数据库,并将数据加入缓存,
这样大大提升系统访问效率面试
4、redis特性
- 速度快,由于数据存在内存中
- 支持丰富数据类型,支持string,list,set,sorted set,hash
- 支持事务,操做都是原子性
- 丰富的特性:可用于缓存,消息,按key设置过时时间,过时后将会自动删除
- redis能够持久化其数据
仅记录最近面试他人常常问到已经本身容易忘记的redis概念。

扫码关注我获取更多面试技巧↑↑redis