面试题汇总

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挂了,哨兵会提供客户端一个新地址。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值