2021Java面试题合集-Redis面试题42道.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2021Java面试题合集-Redis面试题42道.pdf》由会员分享,可在线阅读,更多相关《2021Java面试题合集-Redis面试题42道.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、什 么 是 Redis?Redis是 完 全 开 源 免 费 的,遵 守 BSD协 议,是 一 个 高 性 能 的 key-value数 据 库。Redis与 其 他 key-va lu e缓 存 产 品 有 以 下 三 个 特 点:Redis支 持 数 据 的 持 久 化,可 以 将 内 存 中 的 数 据 保 存 在 磁 盘 中,重 启 的 时 候 可 以 再 次 加 载 进 行 使 用.Redis不 仅 仅 支 持 简 单 的 key-value类 型 的 数 据,同 时 还 提 供 list,set,zset,hash等 数 据 结 构 的 存 储。Redis支 持 数 据 的 备
2、 份,即 master-slave模 式 的 数 据 备 份。Redis优 势 性 能 极 高-Redis能 读 的 速 度 是 110000次/s,写 的 速 度 是 81000次/s。丰 富 的 数 据 类 型-Redis支 持 二 进 制 案 例 的 Strings,Lists,Hashes,Sets及 Ordered Sets数 据 类 型 操 作。原 子-R e d is的 所 有 操 作 都 是 原 子 性 的,意 思 就 是 要 么 成 功 执 行 要 么 失 败 完 全 不 执 行。单 个 操 作 是 原 子 性 的。多 个 操 作 也 支 持 事 务,即 原 子 性,通 过
3、MULTI和 EXEC指 令 包 起 来。丰 富 的 特 性-Redis还 支 持 publish/subscribe,通 知,key过 期 等 等 特 性。Redis与 其 他 key-value存 储 有 什 么 不 同?Redis有 着 更 为 复 杂 的 数 据 结 构 并 且 提 供 对 他 们 的 原 子 性 操 作,这 是 一 个 不 同 于 其 他 数 据 库 的 进 化 路 径。Redis的 数 据 类 型 都 是 基 于 基 本 数 据 结 构 的 同 时 对 程 序 员 透 明,无 需 进 行 额 外 的 抽 象。Redis运 行 在 内 存 中 但 是 可 以 持 久
4、化 到 磁 盘,所 以 在 对 不 同 数 据 集 进 行 高 速 读 写 时 需 要 权 衡 内 存,因 为 数 据 量 不 能 大 于 硬 件 内 存。在 内 存 数 据 库 方 面 的 另 一 个 优 点 是,相 比 在 磁 盘 上 相 同 的 复 杂 的 数 据 结 构,在 内 存 中 操 作 起 来 非 常 简 单,这 样 Redis可 以 做 很 多 内 部 复 杂 性 很 强 的 事 情。同 时,在 磁 盘 格 式 方 面 他 们 是 紧 凑 的 以 追 加 的 方 式 产 生 的,因 为 他 们 并 不 需 要 进 行 随 机 访 问。2、Redis的 数 据 类 型?答:Re
5、dis支 持 五 种 数 据 类 型:string(字 符 串),hash(哈 希),list(列 表),set(集 合)及 zsetsorted s e t:有 序 集 合)。我 们 实 际 项 目 中 比 较 常 用 的 是 string,hash如 果 你 是 Redis中 高 级 用 户,还 需 要 加 上 下 面 几 种 数 据 结 构 HyperLogLog.Geo,Pub/Sub0如 果 你 说 还 玩 过 Redis M odule,像 BloomFilter,RedisSearch,Redis-ML,面 试 官 得 眼 睛 就 开 始 发 亮 了。3、使 用 Redis有 哪
6、 些 好 处?1、速 度 快,因 为 数 据 存 在 内 存 中,类 似 于 HashM叩,HashMap的 优 势 就 是 查 找 和 操 作 的 时 间 复 杂 度 都 是 01)2、支 持 丰 富 数 据 类 型,支 持 string,list,set,Zset,hash等 3、支 持 事 务,操 作 都 是 原 子 性,所 谓 的 原 子 性 就 是 对 数 据 的 更 改 要 么 全 部 执 行,要 么 全 部 不 执 行 4、丰 富 的 特 性:可 用 于 缓 存,消 息,按 key设 置 过 期 时 间,过 期 后 将 会 自 动 删 除 4、Redis相 比 Memcached
7、有 哪 些 优 势?1、Memcached所 有 的 值 均 是 简 单 的 字 符 串,redis作 为 其 替 代 者,支 持 更 为 丰 富 的 数 据 类 2、Redis的 速 度 比 Memcached快 很 3、Redis可 以 持 久 化 其 数 据 5、Memcache与 Redis的 区 别 都 有 哪 些?1、存 储 方 式 Memecache把 数 据 全 部 存 在 内 存 之 中,断 电 后 会 挂 掉,数 据 不 能 超 过 内 存 大 小。Redis有 部 份 存 在 硬 盘 上,这 样 能 保 证 数 据 的 持 久 性 2、数 据 支 持 类 型 Memcac
8、he对 数 据 类 型 支 持 相 对 简 单。Redis有 复 杂 的 数 据 类 型。3、使 用 底 层 模 型 不 同 它 们 之 间 底 层 实 现 方 式 以 及 与 客 户 端 之 间 通 信 的 应 用 协 议 不 一 样。Redis直 接 自 己 构 建 了 VM机 制,因 为 一 般 的 系 统 调 用 系 统 函 数 的 话,会 浪 费 一 定 的 时 间 去 移 动 和 请 求。6、Redis是 单 进 程 单 线 程 的?答:Redis是 单 进 程 单 线 程 的,redis利 用 队 列 技 术 将 并 发 访 问 变 为 串 行 访 问,消 除 了 传 统 数 据
9、 库 串 行 控 制 的 开 销。7、一 个 字 符 串 类 型 的 值 能 存 储 最 大 容 量 是 多 少?答:512M8、Redis的 持 久 化 机 制 是 什 么?各 自 的 优 缺 点?Redis提 供 两 种 持 久 化 机 制 RDB和 AOF机 制:1、RDBRedis DataBase)持 久 化 方 式:是 指 用 数 据 集 快 照 的 方 式 半 持 久 化 模 式)记 录 redis数 据 库 的 所 有 键 值 对,在 某 个 时 间 点 将 数 据 写 入 一 个 临 时 文 件,持 久 化 结 束 后,用 这 个 临 时 文 件 替 换 上 次 持 久 化
10、的 文 件,达 到 数 据 恢 复。优 点:1、只 有 一 个 文 件 d u m p.rd b,方 便 持 久 化.2、容 灾 性 好,一 个 文 件 可 以 保 存 到 安 全 的 磁 盘。3、性 能 最 大 化,fo rk子 进 程 来 完 成 写 操 作,让 主 进 程 继 续 处 理 命 令,所 以 是 I0 最 大 化。使 用 单 独 子 进 程 来 进 行 持 久 化,主 进 程 不 会 进 行 任 何 I0 操 作,保 证 了 redis的 高 性 能)4.相 对 于 数 据 集 大 时,比 AOF的 启 动 效 率 更 高。缺 点:1、数 据 安 全 性 低。RDB是 间 隔
11、 一 段 时 间 进 行 持 久 化,如 果 持 久 化 之 间 redis发 生 故 障,会 发 生 数 据 丢 失。所 以 这 种 方 式 更 适 合 数 据 要 求 不 严 谨 的 时 候)2、AOFAppend-only file)持 久 化 方 式:是 指 所 有 的 命 令 行 记 录 以 redis命 令 请 求 协 议 的 格 式 完 全 持 久 化 存 储)保 存 为 aof文 件。优 点:1、数 据 安 全,aof持 久 化 可 以 配 置 appendfsync属 性,有 a lw a y s,每 进 行 一 次 命 令 操 作 就 记 录 到 aof文 件 中 一 次。
12、2、通 过 叩 pend模 式 写 文 件,即 使 中 途 服 务 器 宕 机,可 以 通 过 redis-check-aof工 具 解 决 数 据 一 致 性 问 题。3、AOF机 制 的 rewrite模 式。AOF文 件 没 被 rewrite之 前(文 件 过 大 时 会 对 命 令 进 行 合 并 重 写),可 以 删 除 其 中 的 某 些 命 令(比 如 误 操 作 的 flushall)缺 点:1、AOF文 件 比 RDB文 件 大,且 恢 复 速 度 慢。2、数 据 集 大 的 时 候,比 rdb启 动 效 率 低。9、Redis常 见 性 能 问 题 和 解 决 方 案:1
13、、Master最 好 不 要 写 内 存 快 照,如 果 Master写 内 存 快 照,save命 令 调 度 rdbSave函 数,会 阻 塞 主 线 程 的 工 作,当 快 照 比 较 大 时 对 性 能 影 响 是 非 常 大 的,会 间 断 性 暂 停 服 务 2、如 果 数 据 匕 徽 重 要,某 个 Sgve开 启 AOF备 份 数 据,策 略 设 置 为 每 秒 同 步 一 3、为 了 主 从 复 制 的 速 度 和 连 接 的 稳 定 性,Master和 Slave最 好 在 同 一 个 局 域 网 4、尽 量 避 免 在 压 力 很 大 的 主 库 上 增 加 从 5、主
14、从 复 制 不 要 用 图 状 结 构,用 单 向 链 表 结 构 更 为 稳 定,即:Master-Slave1-Slave2-Slave3.这 样 的 结 构 方 便 解 决 单 点 故 障 问 题,实 现 Slave对 Master的 替 换。如 果 Master挂 了,可 以 立 刻 启 用 S g ve l做 M a s te r,其 他 不 变。10、redis过 期 键 的 删 除 策 略?1、定 时 删 除:在 设 置 键 的 过 期 时 间 的 同 时,创 建 一 个 定 时 器 timer).让 定 时 器 在 键 的 过 期 时 间 来 临 时,立 即 执 行 对 键 的
15、 删 除 操 作。2、惰 性 删 除:放 任 键 过 期 不 管,但 是 每 次 从 键 空 间 中 获 取 键 时,都 检 查 取 得 的 键 是 否 过 期,如 果 过 期 的 话,就 删 除 该 键;如 果 没 有 过 期,就 返 回 该 键。3、定 期 删 除:每 隔 一 段 时 间 程 序 就 对 数 据 库 进 行 一 次 检 查,删 除 里 面 的 过 期 键。至 于 要 删 除 多 少 过 期 键,以 及 要 检 查 多 少 个 数 据 库,则 由 算 法 决 定。11、Redis的 回 收 策 略(淘 汰 策 略)volatile-lru:从 已 设 置 过 期 时 间 的
16、数 据 集(server.dbi.expires)中 挑 选 最 近 最 少 使 用 的 数 据 淘 汰 v o la tile-ttl:从 已 设 置 过 期 时 间 的 数 据 集(server.dbi.expires)中 挑 选 将 要 过 期 的 数 据 淘 汰 volatile-random:从 已 设 置 过 期 时 间 的 数 据 集(server.dbi.expires)中 任 意 选 择 数 据 淘 汰 allkeys-lru:从 数 据 集(server.dbi.dict)中 挑 选 最 近 最 少 使 用 的 数 据 淘 汰 allkeys-random:从 数 据 集(
17、server.dbi.dict)中 任 意 选 择 数 据 淘 汰 no-enviction(驱 逐):禁 止 驱 逐 数 据 注 意 这 里 的 6种 机 制,volatile和 allkeys规 定 了 是 对 已 设 置 过 期 时 间 的 数 据 集 淘 汰 数 据 还 是 从 全 部 数 据 集 淘 汰 数 据,后 面 的 ku、t t l以 及 random是 三 种 不 同 的 淘 汰 策 略,再 加 上 一 种 no-enviction永 不 回 收 的 策 略。使 用 策 略 规 则:1、如 果 数 据 呈 现 悬 律 分 布,也 就 是 一 部 分 数 据 访 问 频 率
18、高,一 部 分 数 据 访 问 频 率 低,则 使 用 aUkeys-Iru2、如 果 数 据 呈 现 平 等 分 布,也 就 是 所 有 的 数 据 访 问 频 率 都 相 同,则 使 用 aUkeys-random12、为 什 么 edis需 要 把 所 有 数 据 放 到 内 存 中?答:Redis为 了 达 到 最 快 的 读 写 速 度 将 数 据 都 读 到 内 存 中,并 通 过 异 步 的 方 式 将 数 据 写 入 磁 盘。所 以 redis具 有 快 速 和 数 据 持 久 化 的 特 征。如 果 不 将 数 据 放 在 内 存 中,磁 盘 I/O速 度 为 严 重 影 响
19、 redis的 性 能。在 内 存 越 来 越 便 宜 的 今 天,redis将 会 越 来 越 受 欢 迎。如 果 设 置 了 最 大 使 用 的 内 存,则 数 据 已 有 记 录 数 达 到 内 存 限 值 后 不 能 继 续 插 入 新 值。13、Redis的 同 步 机 制 了 解 么?答:Redis可 以 使 用 主 从 同 步,从 从 同 步。第 一 次 同 步 时,主 节 点 做 一 次 bgsa ve,并 同 时 将 后 续 修 改 操 作 记 录 到 内 存 b u ffe r,待 完 成 后 将 rdb文 件 全 量 同 步 到 复 制 节 点,复 制 节 点 接 受 完
20、 成 后 将 rdb镜 像 加 载 到 内 存。加 载 完 成 后,再 通 知 主 节 点 将 期 间 修 改 的 操 作 记 录 同 步 到 复 制 节 点 进 行 重 放 就 完 成 了 同 步 过 程。14、Pipeline有 什 么 好 处,为 什 么 要 用 pipeline?答:可 以 将 多 次 I。往 返 的 时 间 缩 减 为 一 次,前 提 是 pipeline执 行 的 指 令 之 间 没 有 因 果 相 关 性。使 用 redis-benchmark进 行 压 测 的 时 候 可 以 发 现 影 响 redis的 QPS峰 值 的 一 个 重 要 因 素 是 pipel
21、ine批 次 指 令 的 数 目。15、是 否 使 用 过 Redis集 群,集 群 的 原 理 是 什 么?1.、Redis Sentinal着 眼 于 高 可 用,在 master宕 机 时 会 自 动 将 slave提 升 为 m a s te r,继 续 提 供 服 务。2.、Redis Cluster着 眼 于 扩 展 性,在 单 个 redis内 存 不 足 时,使 用 Cluster进 行 分 片 存 储。16、Redis集 群 方 案 什 么 情 况 下 会 导 致 整 个 集 群 不 可 用?答:有 A,B,(:三 个 节 点 的 集 群,在 没 有 复 制 模 型 的 情
22、况 下,如 果 节 点 B失 败 了,那 么 整 个 集 群 就 会 以 为 缺 少 5501-11000这 个 范 围 的 槽 而 不 可 用。17、Redis支 持 的 Java客 户 端 都 有 哪 些?官 方 推 荐 用 哪 个?答:Redisson、Jedis、lettuce 等 等,官 方 推 荐 使 用 Redisson。18、Jedis与 Redisson对 比 有 什 么 优 缺 点?答:Jedis是 Redis的 Java实 现 的 客 户 端,其 API提 供 了 改 交 全 面 的 Redis命 令 的 支 持;Redisson实 现 了 分 布 式?口 可 扩 展 的
23、 Java数 据 结 构,和 Jed is相 比,功 能 较 为 简 单,不 支 持 字 符 串 操 作,不 支 持 排 序、事 务、管 道、分 区 等 Redis特 性。Redisson的 宗 旨 是 促 进 使 用 者 对 Redis的 关 注 分 离,从 而 让 使 用 者 能 够 将 精 力 更 集 中 地 放 在 处 理 业 务 逻 辑 上。19、Redis如 何 设 置 密 码 及 验 证 密 码?设 置 密 码:config set requirepass 123456 授 权 密 码:auth 12345620、说 说 Redis哈 希 槽 的 概 念?答:Redis集 群 没
24、 有 使 用 一 致 性 hash,而 是 引 入 了 哈 希 槽 的 概 念,Redis集 群 有 16384个 哈 希 槽,每 个 key通 过 CRC16校 验 后 对 16384取 模 来 决 定 放 置 哪 个 槽,集 群 的 每 个 节 点 负 责 一 部 分 hash槽。21、Redis集 群 的 主 从 复 制 模 型 是 怎 样 的?答:为 了 使 在 部 分 节 点 失 败 或 者 大 部 分 节 点 无 法 通 信 的 情 况 下 集 群 仍 然 可 用,所 以 集 群 使 用 了 主 从 复 制 模 型,每 个 节 点 都 会 有 N-1个 复 制 品.22、Redis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2021 Java 试题 Redis 42
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内