Redis相关的面试问题

1.什么是Redis?

一款高性能的key-value缓存数据库。

优势:一款基于内存的key-value数据库,整个数据库都在内存中运行操作,每秒可以支持10W左右的读写操作,而且支持数据持久化,还可以支持多种数据结构。

缺点:容量受到物理内存的限制。不能做海量数据的高性能读写。适合较少数据的高性能读写。

2.Redis 和memcache 的区别:

第一:数据类型:Redis支持五种数据类型。String ,list,set,sorted set ,hash。

String 的操作: get set ,keys *...

list:Lpush, Lpop .

hash : hset key field value. hget 

set: sadd , spop 

sorted set( zset): zadd 

第二:Redis支持持久化。memcache 不支持持久化,一旦断电,数据丢失。

第三:Redis 速度快于memcache.

3.Redis 持久化方式

1.快照方式

默认的持久化方式,Redis默认将数据快照的二进制文件写入磁盘中,文件名叫做dumps.rdb。

可以设置N秒操作几次后快照持久化一次,或者调用save命令。

原理:1.redis fork一个子进程  2.子进程将数据写入到临时rdb 文件中 3 写完后用新文件代替老文件 4 copy and write

缺点:当在两次快照执行期间丢失数据,将不会被记录,这也是快照的缺点。

2.AOF 方式(append only)

记录指令日志的方式。,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部。保存在硬盘上

优势:1.灵活设置持久化时间,若将持久化时间间隔为1s,那么最多丢失1s的数据。

2.支持日志重写和修复。

缺点:文件要比RDB大许多,恢复速度慢。

AOF默认关闭,开启方法,修改配置文件reds.conf:appendonly yes

Redis是单线程的

redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销

(7)分布式

redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。

这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量

(8)读写分离模型

通过增加Slave DB的数量,读的性能可以线性增长。为了避免Master DB的单点故障,集群一般都会采用两台Master DB做双机热备,所以整个集群的读和写的可用性都非常高。
读写分离架构的缺陷在于,不管是Master还是Slave,每个节点都必须保存完整的数据,如果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于Write-intensive类型的应用,读写分离架构并不适合。

                                                                 

(9)数据分片模型

为了解决读写分离模型的缺陷,可以将数据分片模型应用进来。

可以将每个节点看成都是独立的master,然后通过业务实现数据分片。

结合上面两种模型,可以将每个master设计成由一个master和多个slave组成的模型。

猜你喜欢

转载自blog.csdn.net/weixin_38035852/article/details/81389274