1.redis是什么?
Redis是完全开源的,遵守BSD协议,是一个高性能的key-value数据库。redis也是现在最受欢迎的NoSQL数据库之一,包含多种数据结构,支持网络,基于内存,可选持久性的键值对存储数据库
Redis与其他key-value缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
- Redis支持数据的备份,即master-slave模式的数据备份
1.Redis的优势
- 性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s,可以满足企业低延迟的需求
- 丰富的数据结构:Redis支持二进制的String,Lists,Hashes,Sets,Sets数据类型操作
- 原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行,也就是说支持事务
- 丰富的特性:Redis还支持publish/subscribe,通知,key过期等等特性
2.常见的面试题 什么是Redis? Redis是一个基于内存的高性能的key-value数据库
Redis的特点?
- Redis本质是一个key-value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库更新到硬盘上进行保存
- 因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过十万次读写操作,是已知性能最快的Key-valueDB
- Redis的数据库容量收到物理内存的限制,不能用作海量数据的高性能读写
- Redis支持保存多种数据结构,此外单个value最大限制是1GB,另外Redis也可以对存入的Key-value设置过期时间
使用Redis有哪些好处? 1:速度快 2.数据类型多 3.支持事务 4.特性多
2.使用场景
- 常见场景
1.缓存:毫无疑问这是Redis的主要场景,可以大幅度提升服务器性能,减少人力成本,服务器成本 2.排行榜:传统的关系型数据库来做排行榜,每次更新排名,就非常的麻烦,而利用Redis的有序集合数据结构能够简单的搞定 3.计算器/限速器:利用Redis中原子性的自增操作,我们可以统计类似用户点赞数,访问数等等,而限速器比较典型的使用场景是限制用户访问频率来降低秒杀活动的服务器请求压力。 - 其它场景
1.好友关系:利用集合的一些命令,比如求交集,并集,差集等。可以方便搞定一些共同好友,共同爱好之类的功能 2.简单消息队列:一些不需要高可靠的通知需求,但是大量数据会带来极大的DB压力,完全可以用List来完成异步解耦 3.一些频繁被访问的数据放在Redis中,利用Redis是放在内存中的特性可以很高效的进行访问
3.Redis为什么快?
Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小和网络的带宽,而且单线程的性能已经非常高了,就没有必要使用多线程了,所有Redis是单进程单线程的
- 如果我们运行的服务器是多核服务器,为了充分利用多核的优势,我们可以在单台服务器起多个Redis服务,或者架设主从复制,哨兵模式,集群模式等多机方案
- Redis服务运行时只在处理客户端请求是单进程单线程的,但是服务运行时会有其他进程或线程处理其他的事
为什么快?
- 完全基于内存,绝大部分请求时基于内存的操作,而Redis的数据结构是类似与HashMap,而HashMap的操作时间复杂度是O(1)
- Redis数据结构设计简单,方便操作
- 使用单线程,避免了进程或线程的上下文切换相关的消耗,不用考虑锁相关的消耗
- 使用多路I/O复用模型,非阻塞IO
|