Redis问答(1)
redisredis大约 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