首页 > 数据库 >Redis面试题

Redis面试题

时间:2022-09-26 15:36:35浏览次数:61  
标签:AOF 面试题 删除 过期 Redis 内存 key 移除

为啥快?

1.基于内存
2.优秀的数据结构,大多数O(1) 时间复杂度的命令
3.自定义redis协议
4.多路I/O复用模型
5.单线程,避免线程切换影响

持久化方式 区别?

AOF(保存的是命令)
    优点:最多丢失一秒数据
    缺点:体积大,恢复慢(重新再让命令)
RDB(保存的是快照)
    优点:最大化redis性能,恢复更快
    缺点:丢失数据,耗时效率低
官方推荐两个都启用,如果对数据安全没有要求可以只启用RDB,但是不建议单独使用AOF。如果只是用Redis作为纯内存缓存,则可以都不启用。
同时开启两种缓存的话,恢复数据时会优先采用AOF,因为AOF的数据更加完整。

什么场景用到过,什么数据类型?

String   分布式锁
list     不要求一致性的消息队列
set      用户昵称不可重复
zset     延迟队列 有序集合
hash     Java对象类存储

过期删除策略?

定时删除 优先内存  妥协:删除一些 一点点来
惰性删除 优先CPU

内存淘汰策略,淘汰算法?

了解最大内存
volatile-lru:利用 LRU 算法移除设置过过期时间的 key (LRU:最近使用 Least Recently Used );
allkeys-lru:利用 LRU 算法移除任何key (和上一个相比,删除的 key 包括设置过期时间和不设置过期时间的),通常使用该方式;
volatile-random:移除设置过过期时间的随机key ;
allkeys-random:无差别的随机移除;
volatile-ttl:移除即将过期的 key (minor TTL);
noeviction:不移除任何 key,只是返回一个写错误 ,默认选项。当前项目使用;

数据并发竞争,造成啥问题,怎么解决

多机器更新同一key问题,数据版本号比较,时间戳比较来解决。使之保存为最新数据。

标签:AOF,面试题,删除,过期,Redis,内存,key,移除
From: https://www.cnblogs.com/li-xiaotian/p/16620794.html

相关文章

  • Python菱形继承(网易面试题)
    菱形继承顾名思义,是一个菱形继承(好像是废话),直接上图  菱形继承就是多继承,例上图所有,A是父类,B和C是A的子类,B和C是D的父类。classParent(object):def__init__(......
  • 你需要知道的webpack高频面试题
    谈谈你对webpack的看法webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScr......
  • Redis 主从哨兵集群选型
    主从复制模仿Mysql实现的高可用,数据备份,读操作的负载均衡,提升一定的qps,但缺点就是不能自动恢复,且只有主节点可写,限制了写能力,并且单机存储有限制。哨兵哨兵机器就是单......
  • 2022新鲜的阿里外包产品经理面试题
    虎哥寄语面试,就是一场博弈,你要在一定的时间内高效的证明你的能力,符合这个岗位需求、符合这个薪资需求、符合面试官个人需求。深度思考一下,对应问题要如何答复,才能既符合自......
  • redis curd 操作故障模拟
    1、下载对应的包,并编译gitclonehttps://gitlab.onemt.co/onemt-injection/redis-injection.gitmakebuild或者下载这个链接中的可执行文件 https://files.cnblogs......
  • Vue面试题22:说一说Vue实例在挂载过程中发生了什么 (总结自B站up主‘前端杨村长’视频,仅
    挂载过程中完成了两件最重要的事:初始化(App实例的创建、数据状态的初始化、选项的处理、建立响应式数据等)建立更新机制,把这两件事说清除即可回答范例1.挂载过程指的是ap......
  • 在 KubeSphere 中部署高可用 Redis 集群
    作者:余生大大,大数据开发工程师,云原生爱好者,KubeSphere社区用户。前言Redis是在开发过程中经常用到的缓存中间件,在生产环境中为了考虑稳定性和高可用一般为集群模式的......
  • golang面试题3
    go基础1、redis部署多节点模式,异步队列2、go-redis和redis-go//go-redis的连接模式,直连哨兵3、go异常处理,异常捕获方式,go里面替代try-catch如何操作4、gomaxprocs的默认......
  • 面试题1
    #第一题(列举了解的编程语言及语言的区别)编译型语言:一次性把代码都编译成二进制,然后运行解释型语言:实时性一行一行,编译一句,运行一句1.python解释型简洁高效,......
  • redis的字符串String类型基本操作
    1、首先连上你的redis以下一些命令很简单,或者执行命令后效果也无法体现的就没有进行截图展示2、String相关操作-------------------设置值-------------------设置指......