原文地址:Redis面试相关内容了解下~(一)
1、什么是Redis?
Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
与其它key-value缓存产品相比较,Redis有以下三大特点:
-
Redis支持数据持久化,可将内存中的数据保存在磁盘,重启服务时可再次加载进行使用。
-
Redis不仅支持key-value类型的数据,还支持list、set、zset、hash等数据结构的存储。
-
Redis支持数据备份,也就是master-salve模式的数据备份。
2、Redis优势?
-
性能极高:读的速度为110000次/s,写的速度是81000次/s。
-
支持多种数据类型:strings、lists、hashes、sets、ordered sets。
-
原子操作:单个操作都是原子性的,要么成功执行,要么全部不执行,多个操作也支持事务,通过multi和exec包起来。
-
丰富特性:支持publish/subscribe、通知、key过期等操作。
3、与其它key-value缓存产品相比较,Redis有什么不同?
-
Redis有着更为复杂的数据结构并提供对其的原子操作,其数据类型都是基于基本数据结构且对程序人员透明,无需额外抽象。
-
Redis运行在内存中,但可持久化到磁盘,所以在对不同数据进行高速读写时,需权衡内存,因为数据量不能大于硬件内存。
-
相比在磁盘上相同复杂的数据结构在内存中操作起来非常简单,如此Redis可做很多内部复杂性很强的事情,同时,在磁盘格式方面,Redis是以紧凑追加的方式存储的,所以并不需要随机访问。
4、Redis的数据类型?
string(字符串)、list(列表)、hash(哈希)、set(集合)、ordered set(有序集合)。
5、Redis相比于Memcache有哪些优势?
-
Memcache所有值都是简单字符串,Redis支持更丰富的数据类型。
-
Redis速度比Memcache快。
-
Redis可持久化数据。
6、Redis相比于Memcache有哪些区别?
-
存储方式:Memcache将数据全部存储在内存,断电后会挂掉,数据量不能超过内存,Redis有部分数据存储在磁盘,保证数据持久性。
-
数据类型:Memcache所有值是简单字符串,Redis支持更丰富的数据类型。
-
底层模型:Redis自己构建VM机制,一般系统调用系统函数会浪费时间。
7、Redis是单进程单线程?
Redis利用队列技术将并发访问变为串行访问,消除传统数据库串行控制的开销。
8、一个字符串类型的值能存储的最大容量是多少?
512M。
9、Redis常见性能问题和解决方案?
-
master最好不要写内存快照,否则save调度rdbSave会阻塞主线程的工作,当快照较大时,对性能会产生很大影响,会间断性暂停服务。
-
如数据较重要,某slave可开启AOF备份数据,策略可设置为每秒同步一次。
-
为保证主从复制的速度和连接的稳定性,master和slave最好在同一局域网。
-
尽量避免在压力很大的主库上增加从库。
-
主从复制尽量不要使用图状结构,用单链表结构更为稳定,也就是master<-slave1<-slave2<-slave3...结构,此结构可解决单点故障问题,实现slave对master的替换,如master挂了,可立即启用slave1做master,其它不变。
至此,本次分享就结束了,后期会慢慢补充。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。