码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis常见面试题


    Java常见面试题_2022最新版

    序号内容链接
    1Java基础面试题https://blog.csdn.net/weixin_46030002/article/details/126399353
    2Java集合容器面试题https://blog.csdn.net/weixin_46030002/article/details/126425298
    3Java线程面试题https://blog.csdn.net/weixin_46030002/article/details/126518395
    4Java异常面试题https://blog.csdn.net/weixin_46030002/article/details/126482778
    5Spring常见面试题https://blog.csdn.net/weixin_46030002/article/details/127281194
    6SpringMVC常见面试题https://blog.csdn.net/weixin_46030002/article/details/127057785
    7Mybatis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126026561
    8MySQL常见面试题https://blog.csdn.net/weixin_46030002/article/details/126557564
    9Redis常见面试题https://blog.csdn.net/weixin_46030002/article/details/126435834
    • Java常见面试题_2022最新版持续更新中…

    文章目录

    • Java常见面试题_2022最新版
      • Redis官网
    • 一、基本概念了解
      • Redis是什么
      • Redis版本
    • 二、常见面试题
      • Redis 支持的数据类型有哪些(***)
      • Redis的应用场景:
      • Redis是否能做持久化操作
      • Redis持久化机制是什么?各自的优缺点
      • 缓存预热
      • 缓存命中
      • 缓存穿透
      • 缓存雪崩


    Redis官网

    Redis官网(仅支持Linux系统)
    Redis对于windows的支持


    一、基本概念了解

    Redis是什么

    Redis(R) 本质上是一个 Key-Value 类型的基于内存的缓存型数据库,由 C 语言开发,NoSQL非关系型数据库,Redis本身也会对数据进行持久化处理。

    Redis版本

    Windows版本:Reids 官网本身对于 windows 操作系统没有支持,但是由于是开源软件,微软开发小组,针对于 Redis 开发了 windows 的版本,最新版本为 3.2.100,下载地址见上方链接
    请添加图片描述
    Linux版本: Reids 官网下载即可,地址见上方链接


    二、常见面试题

    Redis 支持的数据类型有哪些(***)

    • String
      • 字符串,整数,浮点数
    • List
      • 列表
    • Set
      • 无序集合
    • Sorted Set(ZSet)
      • 有序结合
    • Hash
      • 散列表

    Redis的应用场景:

    • 计数器
      • String数据类型能做自增自减操作,实现计数功能
    • 缓存
      • 热点数据
      • 临时数据(验证码信息)
    • 会话缓存
      • Session服务器
      • token
    • 消息队列
      • 发布订阅功能
    • 分布式锁
      • 分布式的场景下,无法使用正常的锁对于多个节点的进程进行同步,可以使用Redis自带的SETNX命令或者RedLock分布式锁去实现这个功能
    • 排行榜功能
      • ZSet 可以实现有序操作
    • 实现共同好友功能]
      • Set可以实现交集和并集操作

    Redis是否能做持久化操作

    可以,Redis本身可以对于数据进行持久化处理,将内存中的数据写到磁盘上去,防止服务器宕机导致的数据丢失。
    Redis提供了两种持久化机制:RDB(默认)快照,AOF(持久化)

    Redis持久化机制是什么?各自的优缺点

    Redis提供了两种持久化机制:RDB(默认)快照,AOF(持久化)

    • RDB(Redis DataBase)
      • RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。
      • 优点
        • 只有一个文件 dump.rdb,方便持久化
        • 容灾性好,一个文件可以保存到安全的磁盘
        • 性能最大化,fork 子进程来完成写操作,让主进程继续处理令,所以是 IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能
        • 相对于数据集大时,比 AOF 的启动效率更高
      • 缺点
        • 数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)
    • AOF(Append-only file)
      • 是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志文件执行一次来恢复数据
      • 优点
        • 数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次命令操作就记录到 aof 文件中一次
        • 通过 append 模式写文件,即使中途服务器宕机,可以通过redis-check-aof 工具解决数据一致性问题
        • AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令 进行合并重写),可以删除其中的某些命令(比如误操作的 flushall)
      • 缺点
        • AOF 文件比 RDB 文件大,且恢复速度慢
        • 数据集大的时候,比 rdb 启动效率低
    • RDB和AOF两种持久化的优缺点
      • AOF文件比RDB更新频率高,优先使用AOF还原数据
      • AOF比RDB更安全也更大
      • RDB性能比AOF好
      • 如果两个都配了优先加载AO

    缓存预热

    缓存预热就是在启动项目(项目上线后),将相关的缓存数据直接加载到缓存中,这样可以避免在用户请求数据的时候,先查询数据库,再进行数据缓存,而是直接可以查询事先被预热的数据(加载到缓存中的数据),增加了用户查询效率,提高了用户的使用体验感。

    • 增加手动刷新数据功能,上线时手动操作
    • 数据量不大时,可以在项目启动的时候进行自动加载
    • 定时刷新缓存

    缓存命中

    • 可以直接通过缓存获取到需要的数据,而不需要通过再次查询数据库或者执行其他操作。
    • 缓存命中不成功的原因:
      • 缓存中根本不存在
      • 缓存已过期

    缓存穿透

    • 由于缓存中没有用户想要查询的数据,用户请求透过redis直接去请求数据库服务器,导致数据库服务器压力过载。
    • 解决方案:
      • 当缓存不存在,MySQL数据库也不存在这条信息,在redis中缓存成一个空对象,返回给对象。(代码维护简单,但是效果不是很好)
      • Redis为我们提供了一种解决方案,布隆过滤器(代码维护比较复杂,效果很好)

    缓存雪崩

    • 缓存雪崩指的是在某一个时间段,集中获取大量请求,引起数据库压力过大甚至宕机。
    • 缓存雪崩的原因:
      • Redis 突然宕机
      • 大部分数据失效(数据缓存时间同一时间失效)
    • 解决办法:
      • reids 高可用
        • 多增加 Redis 服务器,大家Redis服务器集群,做主从复制
      • 限流降级
        • 缓存失效后,通过锁或者队列来控制读取数据库写缓存的线程数量
          • 单体环境(Lock,Synchronized等)
          • 分布式环境(基于Redis,zookeeper,nacos的分布式锁)
      • 缓存预热
        • 将可能大量访问的数据在项目部署之前先加载到缓存中。在即将发生大并发访问前手动触发加载缓存。
      • 设置不同的过期时间
        • 设置不同的过期时间,让缓存失效的时间尽量均匀

    - [x] 持续更新中…

  • 相关阅读:
    扫雷小游戏(简单详细)(内附完整代码)
    .md结尾的文件如何展示图片
    免杀Bdfproxy
    【Linux复习汇总】得分秘籍,考前速看,可以多考几分
    华为OD机试真题 Java 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路
    Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理
    CefSharp结合VUE3搭建网页资源下载器
    go初识iris框架(四) -框架设置操作
    Java中的mysql——面试题+答案(存储过程,外键,隔离级别,性能优化)——第23期
    HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out解决
  • 原文地址:https://blog.csdn.net/weixin_46030002/article/details/126435834
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号