Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day03】——Java高级篇

        大家好,我是陶然同学,软件工程大三明年实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。

  不敢苟同,相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍热门面试题及恰如其分的解答。当然,我不会太深入,因为我怕记不住!!

  因此,不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法,希望这100天能够让我们有质的飞越,一起冲进大厂!!,让我们一起学(juan)起来!!!

4.Redis的常用存储结构有哪些

String 字符串

Hash 散列 适合用于存储对象

List 列表 可以添加一个元素到头部(左边) 或者尾部(右边)

Set 集合

Sorted(苏特) set 有序集合 每一个元素关联一个double分数 成员是唯一的 分数可以重复

5.redis缓存雪崩,缓存穿透 缓存击穿

缓存雪崩

        redis缓存key同一时间大量失效 导致大量请求全部打到数据库 导致数据库挂掉

扩展:解决方案

        1.设置缓存失效时间 让它不要在同一时间失效 随机初始化失效时间

        2.部署集群 把热点的key放在不同的节点

        3.暴力方法 不设置缓存失效时间

        4.定时刷缓存失效时间 在缓存失效之前 重新把redis缓存进去

缓存穿透

        是指缓存和数据库都没有这种数据 例如用户请求id=-1这种数据缓存里面没有 直接打到数据

库导致数据库挂掉

扩展:解决方案

        1.无论在数据库查到什么数据 都给它缓存到redis

        2.将ip拉黑

        3.对参数进行合法校验 如果参数不合法 直接return

        4.使用布隆过滤器

缓存击穿

        突然该key失效(热点的key) 一瞬间大量key的请求打到数据库上

扩展:解决方案

        1.不设置缓存失效时间

        2.使用分布式锁 请求数据库的时候 只有一个线程操作数据库 将查询到的数据库存到redis 其

它没有抢到锁的线程让它睡眠几秒 然后再去redis查询 这样数据库的请求就非常小

6.Redis持久化机制 

ROB

        在不同的时间点 将Redis中的数据生成快照 存储到硬盘当中 默认是ROB方式

AOF

        把执行Redis的操作全部记录下来 在下次重启Redis的时候 重新执行所有指令 

ROB和AOF可以同时使用 如果Redis重启 则会使用AOF持久化机制 因为AOF持久化恢复数据更

posted @ 2022-11-09 08:11  陶然同学  阅读(25)  评论(0)    收藏  举报