Redis问答(1)

Larsredisredis大约 2 分钟

Redis为什么快?

  • 基于内存
  • C语言实现,优化数据结构
  • 使用单线程,无上下文切换
  • 基于非阻塞的IO多路复用

Redis的RDB、AOF是什么

Redis 的持久化机制

  • RDB:生成某一时刻的Redis数据快照二进制文件,保存到磁盘(save、bgsave)
  • AOF:写命令追加的方式,将每条执行完成的写命令追加到aof_buf缓冲区中,当调用 flushAppendOnlyFile 函数时决定是否写入AOF文件中,保存到磁盘

Redis的数据结构有哪些

  • String:简单动态字符串(SDS)
  • List:双向链表、压缩列表
  • Hash:哈希表、压缩列表
  • Zset:跳表、压缩列表
  • Set:哈希表、整数数组

Redis支持事务吗

支持关键字,但是不支持事务回滚

  • multi:开启事务
  • exec:提交事务
  • discard:取消事务
  • watch:监控事务执行周期是否有并发修改,若有取消事务。保证事务的隔离性

Redis的watch是什么

监控事务执行周期是否有并发修改,若有取消事务

过期策略、内存淘汰策略

过期策略

  • 惰性删除:被访问到了,如果已经过期,则不返回,同时删除key
    • 大量key不被访问,会导致key无法过期,导致内存占用
  • 定时删除:每隔一定时间,随即抽取一批有过期时间的key,清除已过期的key

内存淘汰策略

  • volatile:有过期时间的key
    • volatile-ttl:所有有过期时间的key中,越早过期越先被删除
    • volatile-random:所有有过期时间的key中,随机删除
    • volatile-lru:所有有过期时间的key中,最近最少使用的被先删除
    • volatile-lfu:所有有过期时间的key中,优先淘汰访问次数少的,访问次数相同时淘汰访问时间更早的key
  • allkey
    • allkey-random
    • allkey-lru
    • allkey-lfu

如何保持与数据库的一致性

  • 只读缓存
  • 读写缓存

并发控制

Redis扩容有什么影响

  • RDB时长、重启时长
  • 主从同步时长

分布式锁、RedLock

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.1