redis基础

109 阅读1分钟

一、redis有哪几种数据结构?

set、zset、List、Hash、String

二、各类数据结构用于什么实际问题?

  1. list:依据ID遍历redis中数据,这时对数据进行删除,导致数据所在的逻辑页码发生变化的问题
  2. set:存储文章的标签
  3. zset:实现按点击量排序

三、存储在哪?数据容易丢失采用什么措施?

  1. 数据存储在内存中
  2. 内存中数据容易丢失,采用RDB和AOF进行持久化
  3. RDB是根据我们自己配置的时间或者手动去执行BGSAVE或SAVE命令,Redis就会去生成RDB文件
  4. AOF是把Redis服务器接收到的所有写命令都记录到日志中

四、redis是单线程,那RDB、AOF会耗时吗?

  1. RDB是一个定时事件,线程不断询问RDB是否准备就绪
  2. 就绪后,则调用besave,会fork出一个子进程,在fork时父线程是阻塞的,核心的处理命令请求和响应还是单线程
  3. AOF需要写文件,在写命令执行之后,追加写进buffer缓冲区
  4. 进而持久化需要进行存盘,提供多种存盘策略
  5. 每秒一次/每条命令都执行/从不存盘
  6. 启动一个线程去存盘,然而一直存盘会导致数据膨胀
  7. 从而fork出一个子进程,进行重写,即压缩