linux运维工程师面试常见问题整理3--redis相关

1. redis 持久化是怎么做的

1.客户端向服务端发送写的操作
2.数据库服务端接收到写请求的数据
3.服务端调用weite这个系统调用,将数据往磁盘上写
4.操作系统将缓冲区中的数据转移到磁盘控制器上
5.磁盘控制器将数据写到磁盘的物理介质中

2. redis 是用了集群还是单点

1.并发访问量大的时候肯定要集群才能满足需求,如果用户量不大,访问不是特频繁,单点基本可以。
2.考虑到高可用的时候肯定是要使用集群的,因为存在单点故障问题。
3.对数据延时要求高肯定是要使用集群的,单点毕竟存储和计算能力有限。
4.对数据可靠性,稳定性,以及系统整体容灾,数据容错,数据一致性等高性能要求高,集群是肯定的。

3. redis RDB 与AOF 有什么区别

"RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

4. redis和memcache有什么区别,分别的优缺点是啥

区别

1.redis中并不是所有的数据都一直储存在内存中

2.Redis在很多方面具备数据库的特征,也就是说redis就是一个数据库系统,memcache只是简单的K/V缓存

3.100k以上的数据中memcache性能要高于redis

如果说内存使用效率,memcached的内存利用率更高,而如果redis采用hash结构来做key-value存储由于其组合式的压缩,其内存利用率会高于memcache

如果对数据持久化和数据同步有所要求,那么就选择redis,这两个特性memcache都不具备

Redis和memcache在写的性能上面差别不大,读取的性能上,尤其是批量读取性能上面memcache更强

Memcache

memcache可以利用多核优势,单实例吞吐量极高

只支持简单的key-value数据结构

无法经行持久化,数据不能备份,只能用于缓存使用,重启后数据全部丢失

Redis

支持多种数据结构

单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题

支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而经行数据备份或数据恢复等操作,较好的防止数据丢失的手段

支持主从复制,通过主从机制,可以实时经行数据的同步复制,支持多级复制和增量复制

支持pub/sub消息订阅机制,可以用来经行消息订阅宇通知

支持检点的事物需求,但业界只用场景很少,并不成熟

5.Redis支持的数据类型有哪些

字符串、hash、列表、无序集合set、有序集合

6.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

  1. 什么是持久化?
    持久化把内存中的数据存储到硬盘中,有效避免进程退出造成的数据丢失。

  2. 持久化的方式
    RDB Redis DataBase
    AOF Append-only file

2.1 RDB Redis DataBase
功能核心函数, rdbSave rdbLoad
把当前进程的快照数据保存到硬盘中

2.1.1 优点
代表Redis某个时间点上的数据快照。
用户备份,全量复制
Redis 加载RDB恢复数据远远快于AOF

2.1.2 缺点
无法做到实时持久化,秒级持久化
二进制格式,存在兼容问题

2.2 AOF Append-only file
核心函数 flushAppendOnlyFile
每当执行服务器任务或函数时,flushAppendOnlyFile 都会被调用。
WRITE: 根据条件,将aof_buf中的缓存写入AOF文件
SAVE: 根据条件,调用fsync fdatasync 命令,把AOF文件保存到磁盘中
存储结构:内容是Redis通讯协议格式的命令文本存储。

2.3 AOF 和 RDB对比
AOF 比 RDB 更新频率更高,优先使用AOF还原数据
AOF 比 RDB更安全,更大
RDB性能比AOF好
优先加载AOF

你可能感兴趣的:(面试技巧及内容总结,运维面试技巧)