JavaEE-面试-redis常见问题-1

面试记录1 StringBuffer中的buffer可以理解为缓冲区,缓冲区中的数据肯定是线程安全的,StringBuilder可以理解为字符串的构造器,构造过程不考虑线程安全问题所以StringBuilder是线程不安全的,相应的StringBuilder在单线程下效率高于StringBuffer。String对象是不可变的,一旦创建了一个String对象,就无法再修改它的值。ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创 建,然后添加数据,通过调用下标进行使用。 阅读详情

面试题汇总

序号问题描述新增日期
1你们项目哪里用到redis/Redis你们怎么用的2018-05-13
2什么场景会选用redis2018-05-13
3redis可以存储什么数据类型2018-05-13
4redis具体怎么存储2018-05-13
5redis具体是怎么实现的2018-05-13
6redis怎么更新的2018-05-13
7redis缓存怎么设置大小2018-05-13
8Redis怎么和数据库同步2018-05-13
9Redis你们怎么部署的2018-05-13
10工作中Redis的持久方案,你们是怎么做的2018-05-13
11redis怎么做集群2018-05-13
12redis问到了主从数据如何同步2018-05-13
13还有怎么知道redis是否挂了,挂了以后怎么处理2018-05-13
14redis穿透怎么解决2018-05-14
15redis服务器挂了怎么办2018-05-13
16redis哨兵模式搭建及作用2018-05-14

答案

1. 你们项目哪里用到redis/Redis你们怎么用的

  • erp项目:

1、uuid对应的menuid

  • 品优购:

1、 用户的购物车。

2、 用户的支付日志。

3、 手机对应的验证码。

4、 模板id对应的品牌。

5、 模板id对应的规格。

6、 条目名称对应的模板id。

7、 秒杀id对应的商品。

  • 淘淘商城:

1、 token对应的用户信息。

想看到更多细节,可以参考JavaEE-面试-redis的面试思路引导

2. 什么场景会选用redis

1、热数据:经常会被查询,但是不经常被修改或者删除的数据,例如推荐商品、热门搜索、最新列表

2、计数器:诸如统计点击数等应用,因为Redis是单线程,性能效率高,可以避免并发问题。

3、队列:在一些秒杀抢购中,常常会用到队列,它能把并发请求变成串行。

4、排行榜:sorted set可以排序

3. redis可以存储什么数据类型

key-va-ue

va-ue分为string、-ist、set、map,map最常用

4. redis具体怎么存储

这个是问具体api?

操作可以用jedis或者spring-data-redis。

5. 工作中Redis的持久方案,你们是怎么做的

持久方案有两种。RDB和AOF。一种是定时快照,一种是每次操作就缓存一次。

RDB:
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有save 90 1对应操作,一般可以按照自己需求进行优化,在redis.conf中配置dir指定rdb快照文件的位置,配置dbfi-enam指定rdb快照文件的名称。
AOF持久化(一般不使用):
默认情况下Redis没有开启AOF(append on-y fi-e)方式的持久化,可以通过appendon-y参数开启:appendon-y yes,开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendon-y.aof,可以通过appendfi-ename参数修改:appendfi-ename
appendon-y.aof
对比:
rdb:可以设置间隔多长时间保存一次(redis不用任何配置默认的持久化方案)
优点:让redis的数据存取速度变快
缺点:服务器断电时会丢失部分数据(数据的完整性得不到保障)
aof:可以设置实时保存
优点:持久化良好,能够保障数据的完整性
缺点:大大降低了redis系统的存取速度

6. redis怎么更新的

Redis更新,方案可以有多种:
方案1:后台点击更新缓存按钮,从DB查找最新数据集合,删除原缓存数据,存储新数据到缓存
缺点:更新过程中删除掉缓存后刚好有业务在查询,那么这个时候返回的数据会是空,会影响用户体验
方案2:前台获取数据时发现没有缓存数据就会去数据库同步数据到缓存
缺点:当并发请求获取缓存数据不存在的时候,就会产生并发的查询数据的操作
方案3:后台点击更新缓存按钮,从DB查找最新数据集合,这里不删除缓存,通过遍历数据覆盖和删除掉无效的数据
缺点:逻辑相对麻烦,而且更新机制无法通用;
方案4:需要操作人员去操作,或者定时调度,提前加载好数据,前台获取缓存的时候需要先得到缓存数据对应的Redis Key,然后根据key去读取缓存数据。
第4种更新方案使用提前加载到缓存,然后在切换需要显示的缓存数据,可以解决1,2,3中的问题。比如,你可以半夜的时候,进行任务调度,把常用的数据可以先存到redis。
redis内存不足,滥用

7. redis缓存怎么设置大小

在redis目录中,找到redis.conf,找到# maxmemory,后面加上maxmemory16gb,就可以修改缓存大小为16gb

8. Redis怎么和数据库同步

方案1:我们会先去redis中判断数据是否存在,如果存在,则直接返回缓存好的数据。而如果不存在的话,就会去数据库中,读取数据,并把数据缓存到Redis中。适用场合:如果数据量比较大,但不是经常更新的情况(比如用户排行)
方案2:先去redis中判断数据是否存在,如果存在,则直接更新对应的数据(这一步会把对应更新过的key记录下来,比如也保存到redis中比如:key为:save_update_keys【用-push列表记录】),并把更新后的数据返回给页面。而如果不存在的话,就会去先更新数据库中内容,然后把数据保存一份到Redis中。

9. Redis你们怎么部署的

Redis在生产环境我们会配置成集群环境,Redis集群个数为单数个,所以我们一般会配置成3个以上,为了保证高可用,会在每台机器上安装2个Redis,给每条集群结点做一个从节点,一点主节点挂了,从节点能立刻顶上。为了让Redis集群更健康,我们还需要配置哨兵策略来监控Redis集群。

10. redis怎么做集群

为了保证可以进行投票,需要至少3个主节点。每个主节点都需要至少一个从节点,所以需要至少3个从节点,一共需要6台redis服务器可以使用6个redis实例6个redis实例的端口号,7001~7006,因为集群中每个redis除了端口号,其他配置其实一样,所以我们可以先配置好一个集群的redis,然后赋值,修改端口号即可。6台准备完毕之后,需要开启集群策略,然后再这基础上创建集群环境。

11. redis主从数据如何同步

全量同步:
Redis全量复制一般发生在S-ave初始化阶段,这时S-ave需要将Master上的所有数据都复制一份。具体步骤如下:
  1)从服务器连接主服务器,发送SYNC命令;
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
增量同步:
Redis增量复制是指S-ave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令
Redis主从同步策略:
主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,s-ave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

12. 还有怎么知道redis是否挂了,挂了以后怎么处理

通过哨兵策略来监听Redis
哨兵也是 Redis 服务器,只是它与我们平时提到的 Redis 服务器职能不同,哨兵负责监视普通的 Redis 服务器,提高一个服务器集群的健壮和可靠性。哨兵和普通的 Redis 服务器所用的是同一套服务器框架,这包括:网络框架,底层数据结构,订阅发布机制等。

13. redis穿透怎么解决

穿透:
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。
解决方案:
对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
也可以采用一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

14. redis服务器挂了怎么办

Redis-Sentine- redis的哨兵模式
Redis-Sentine-是官方推荐的高可用解决方案,当redis在做master-s-ave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentine-本身也是独立运行的进程,可以部署在其他与redis集群可通讯的机器中监控redis集群。
它的主要功能有一下几点
1、不时地监控redis是否按照预期良好地运行;
2、如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
3、能够进行自动切换。当一个master节点不可用时,能够选举出master的多个s-ave(如果有超过一个s-ave的话)中的一个来作为新的master,其它的s-ave节点会将它所追随的master的地址改为被提升为master的s-ave的新地址。
4、哨兵为客户端提供服务发现,客户端链接哨兵,哨兵提供当前master的地址然后提供服务,如果出现切换,也就是master挂了,哨兵会提供客户端一个新地址。

redis之单机多节点集群,javaee教程网上购书系统 bind 192.168.40.142 5.将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006。分别如下图所示: 启动六个节点的redis ./redis01/redis-server redis01/redis.conf ./redis02/redis-server redis02/redis. 阅读详情

相关推荐

最新Java面试题汇总,看完这些面试文章足够了

十月底十一月将至,2020年已然接近尾声,回顾这一年,经历了太多太多,在这过程中,有点人成功,也有些人频频失败。下面是我对这一年来的面试总结。大家觉得文章不错的,可以点点关注。如果想跟作者交流面试经验以及探讨技术问题,大家也可以扫描尾部二维码添加,暗号【优快云】。 2020年Java最新面试题汇总,希望这些文字对于面试的你们有帮助。 基础面试题 Java面试题-基础篇一 Java面试题-基础篇二 Java面试题-集合框架篇三 Java基础面试题(4) Java基础面试题(5) Java..

AI乔治 3527

Redis基础-面试题一

1.你项目里面用到了Redis,你们为啥用Redis? 因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等,都很容易把数据库打崩,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有Redis 和 Memcached 不过中和考虑了他们的优缺点,最后选择了Redis。 2.Redis有哪些数据结构呀? 字符串String、字典Hash、列...

weixin_44117767的博客 294

JavaEE进阶教程系列文章目录汇总

本文是JavaEE进阶教程系列专栏的目录贴(持续更新中…)全专栏内容完结不会少于120篇,每周更新三篇,全面成长为Java开发工程师,文章覆盖了JavaEE基础与高级JavaWebMysql数据库Redis数据库MogodbKafakaRabbitMQMyBatisMaven基础与高级Spring框架Java高频面试题300道Java常用算法Git操作Java常用源码解析Lua知识;学完本专栏的知识足够应对常用的开发场景,加强基础知识JavaEE进阶教程系列订阅专栏从小白成长到Java开发工程师💪💪💪。

KJ.JK 3万+

Redis高频面试题,使用场景

查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。

weixin_49107940的博客 1368

2020年JavaEE全部面试题目.docx

本文档内容包含从java基础到微服务的全部面试题及分布式环境下出现的问题解决方案。包过数据库。redis和mq等中间件。

Unity 2D精灵点击交互实现:从BoxCollider 2D到Event Trigger的完整指南

本文提供了Unity 2D精灵点击交互的完整实现指南。通过详细拆解BoxCollider 2D与Event Trigger两大核心组件的协同工作原理,手把手教你为Sprite Renderer添加点击、悬停等事件响应。文章包含从基础配置到进阶优化、性能调试的实战步骤,帮助开发者高效实现游戏世界内的对象交互,是Unity 2D开发的实用教程。

ansible6ops的博客 302

redis面试题——项目中怎么用的

内存的读写速度远快于磁盘的读写速度,确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好。:直接操作缓存能承受的请求是远远大于直接访问数据库的,redis单机承载并发量是mysql 单机的几十倍。项目中使用缓存保存医疗机构信息数据。用缓存,主要是高性能、高并发。

weixin_44582492的博客 335

5G协议栈逆向工程:基于开源模拟器的核心网信令分析实战

本文详细介绍了基于开源模拟器Free5GC和UERANSIM的5G协议栈逆向工程实战,涵盖核心网信令分析、环境搭建、认证协议解析及安全漏洞验证。通过NGAP/NAS信令交互解密和异常流量注入测试,帮助研究人员深入理解5G网络安全机制,并提供实用的安全加固建议。

weixin_29250573的博客 678

面试Redis篇

面试篇之Redis总结

yiyiyu66的博客 1687

RAD Studio 12安装全攻略:从下载到破解InterBase的完整流程(附KeyPatch使用技巧)

本文提供RAD Studio 12的完整安装指南,包括系统要求、安装步骤及InterBase数据库的高效配置方法。详细介绍了如何使用KeyPatch工具进行许可证处理,并分享了IDE优化和开发技巧,帮助开发者快速上手这一强大的跨平台开发工具。

q6r7s8t9的博客 952

【脑电分析系列】第15篇:脑电功能连接性与脑网络分析(二):Granger因果性、图论指标与复杂网络构建

摘要: 本文深入探讨了脑电(EEG)分析中的高阶连接性方法——有效连接(Effective Connectivity),重点介绍了Granger因果性(Granger Causality, GC)的原理与应用。GC通过统计预测揭示脑区间信息流动方向,超越了传统功能连接的同步性分析。文章还结合图论指标(如度、路径长度、聚类系数和模块化)量化脑网络的拓扑结构,并通过Python代码(MNE和NetworkX库)演示了从EEG数据构建、分析复杂脑网络的完整流程。该研究为理解大脑动态互动、认知任务信息流及神经系统疾

qq_32516809的博客 1568

面试官问:你们项目中用Redis来干什么?

你好,我是田哥面试中,被问到Redis问题的概率非常高,如果问一些理论性的问题,相信你只要背背八股文就能搞定,但,如果结合项目来问就没那么好对付了。这里给你推荐一个在线刷java面试题的神器:woaijava.cc/mianshi/index本文,咱们就来聊聊Redis的使用场景(如果你项目中没有用到Redis,你看完下面的这些使用场景,你一定能编出几个来),我给你准备了16种Redis使用场景:...

田维常 2329

【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法

对NEX-GDDP数据集进行介绍和下载说明

WW、forever的博客 2394

2024年前端最全J2EE进阶(二十三)jar、war、ear包的区别_j2ee ear(1),吊打面试官 redis

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】jar/war /ear三种文件,在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压缩格式。Jar文件(扩展名为. Jar)包含Java类的普通库、资源(resources)、辅助文件 (auxiliary files)等。

2401_84433829的博客 898

华为OD机试双机位C卷-用户入网定期复评(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【用户入网定期复评】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【用户入网定期复评】。

qq_45776114的博客 841

[deprecated]第四章:TTM分析: 4.2.1 存储分配ttm_bo_validate功能实现分析

ttm_bo_validate是TTM框架中负责验证和调整BufferObject物理内存分配的核心函数,主要用于显存管理。该函数通过placement参数判断BO是否需要迁移或重新分配资源,完成内存分配、迁移及缓存策略调整等操作。实现流程包括资源释放、兼容性检查、迁移保护、新资源分配、迁移实现等步骤,支持多跳迁移和临时缓冲区。典型应用于显存溢出迁移、缓存策略调整、驱动初始化等场景,确保BO始终处于预期状态。

图形/计算GPU的驱动与虚拟化技术分享园地 849

JavaEE-面试-redis的面试思路引导

Redis在面试的时候,被问到的频率还是非常高的,应该是一个必备的知识点 简单介绍? 免费高性能的非关系型的内存数据库。 存储形式为key-value。 value支持4种格式,分别为String、set、list、map。其中String和map常用,其中map最常用。 作为后台开发人员理应掌握redis和MongoDB的使用。 它的出现解决什么问题? 做缓存 缓存提高请求响应速度、减少...

billycoder的专栏 325

python-pandapower电力系统潮流计算(算例8:ieee33节点潮流计算))

python-pandapower电力系统潮流计算(算例8:ieee33节点潮流计算))

总裁余(余登武)博客 5035

[javaee基础] Redis面试题大全含答案

RDB方式:将Redis在内存中的数据库状态保存到磁盘里面,RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态(默认下,持久化到dump.rdb文件,并且在redis重启后,自动读取其中文件,据悉,通常情况下一千万的字符串类型键,1GB的快照文件,同步到内存中的 时间是20-30秒)在此我向大家推荐一个架构学习交流圈。srem key value 从key对应set中移除给定元素,成功返回1,如果value 在集合中不存在或者key不存在返回0。

m0_54828003的博客 144

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

100道中高级Java面试题整理

JavaEE面试题整理一、Java基础篇二、JVM篇三、Tomcat篇四、MyBatis篇五、Spring篇六、SpringMVC面试题整理七、Redis篇八、Mongodb篇九、MQ篇十、Shiro篇十一、搜索引擎篇十二、Nginx篇十三、SpringBoot篇十四、Dubbo篇 一、Java基础篇 1、JAVA中的几种基本数据类型是什么,各自占用多少字节? 浮点类型:float(4字节)、do...

ThisLX的博客 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

面试题大全1-javaSE部分-JavaEE&框架&中间件

文章目录Java面试题大全一.JavaSE 部分基础部分1、Java中基本数据类型有哪些?2、Integer 和 int的区别3、String和StringBuilder和StringBuffer区别4、String a= "A" 和 String a = new String("A") 创建字符串的区别5、下面代码创建了几个对象6、== 和 equals 的区别是什么7、final 和 finally 和 finalize 的区别8、JDK 和 JRE 有什么区别?9、面向对象四大特性10、方法覆盖和重

weixin_43783942的博客 5537

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JavaEE高阶---Redis

缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据 .

baijaiyu的博客 407

[javaee高级] 设计模式面试题

1.说一下设计模式?你都知道哪些? 答:设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。 分类 包含 关注点 创建型模式 工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 关注于对象的创建,同时隐藏创建逻辑 结构型模式 适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模式、桥接模式 关注类和对象之

webot123456的博客 635

面试官常问的Java面试题分享【持续更新】

面试官常问的Java面试题分享作者想要说的话1.什么是J2EE技术?2.JDK 和 JRE 有什么区别?3.final 在 java 中有什么作用?4.Java中八大基本类型有哪些?5.java中操作字符串都有哪些类?6.String 类的常用方法都有那些?7.抽象类必须要有抽象方法吗?8.普通类和抽象类有哪些区别?9.java 中 IO 流分为几种?10.BIO、NIO、AIO 有什么区别?11.List、Set、Map 之间的区别是什么?12.迭代器 Iterator 是什么?13.并行和并发有什么区别

weixin_52340995的博客 1006

JavaWeb编程面试题——导航

面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待。不以刷题进大厂为目的,而是以学习为目的。这里的知识点会持续更新,目录也会随时进行调整。大家可以关注公众号:【编程火箭车】,可以在文章最下方扫码关注。在粉丝福利中进入面题大全方法,其中的Java面试题在线实时更新、查看。

蜗牛老师,专注编程领域 3287
上一篇: JavaEE-面试-POI面试回答思路
下一篇: JavaEE-面试-redis的面试思路引导
billycoder
博客等级 码龄17年 171粉丝 188原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值