zoukankan      html  css  js  c++  java
  • redis 面试相关

    1.redis锁的机制  什么时候会死锁  设计一个死锁的情景
     
        存在风险:SETNX和EXPIRE 为两个指令,如果设置了SETNX后程序崩溃,EXPIRE未成功执行则会出现资源锁死的情况。
        key不存在,将 key 设置为 value.如果 key 已存在,则不做任何操作
        原子 – Redis的所有操作都是原子性的
     
    2. 为什么redis快? (redis是单进程单线程 由C语言编写)
        1.完全基于内存,绝大部分请求是纯粹的内存操作
        2.数据结构简单,对数据操作也简单
        3.采用单线程,避免了不必要的上下文切换和竞争条件,不存在锁的问题.
        4.Redis直接自己构建了VM 机制 
     
    3. redis 过期时间的机制?
     
        1.定期删除:定期删除指的是Redis默认每隔100ms就随机抽取一些设置了过期时间的key,检测这些key是否过期,如果过期了就将其删掉。
        2.惰性删除:惰性删除不再是Redis去主动删除,而是在客户端要获取某个key的时候,Redis会先去检测一下这个key是否已经过期 
        3.定期删除会耗费CPU因为key太多,如果全盘扫描所有的key会非常耗性能,所以是随机抽取一些key来删除。这样就有可能删除不完,需要惰性删除配合。 
     
    4. redis集中过期会发生什么事情?
        CPU会升高
        如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。 
     
     
     5.redis持久化
     
    redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,
    分别是
    1.RDB(Redis DataBase)
     
    2.AOF(Append Only File)
     
    RDB

    RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。

    RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。

    ①、优势

    (1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。

    (2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

    (3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

    ②、劣势

    RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

    AOF

    全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

    优点

    (1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。

    (3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

    (4)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据

    缺点

    (1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大

    (2)AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的

    (3)以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。

     
     
     
     
     
  • 相关阅读:
    总结报告的感想
    第14、15週PTA題目的處理
    PTA題目的處理(三)
    PTA题目的處理(四)
    PTA題目的處理(二)
    PTA題目的處理(一)
    國慶和中秋的學習成果
    剛進入大學一個月的總結和作業
    【接口平台】too many values to unpack
    【接口平台】生成静态模拟数据
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/14020445.html
Copyright © 2011-2022 走看看