采用 Redis+数据库为某互联网文化公司建立网上社区平台

目录

案例

【说明】

【问题 1】(10 分)

【问题 2】(7 分)

【问题 3】(8 分)

【答案】

【问题 1】解析

【问题 3】解析

相关推荐


案例

        阅读以下关于数据库缓存的叙述,回答问题 1 至问题 3。

【说明】

        某互联网文化发展公司因业务发展,需要建立网上社区平台,为用户提供一个对网络文化产品(如互联网小说、电影、漫画等)进行评论、交流的平台。该平台的部分功能如下:

        (a)用户帖子的评论计数器;
        (b)支持粉丝列表功能;
        (c)支持标签管理;
        (d)支持共同好友功能等;
        (e)提供排名功能,如当天最热前 10 名帖子排名、热搜榜前5排名等;
        (f)用户信息的结构化存储;
        (g)提供好友信息的发布/订阅功能。

        该系统在性能上需要考虑高性能、高并发,以支持大量用户的同时访问。开发团队经过综合考虑,在数据管理上决定采用 Redis+数据库 (缓存+数据库)的解决方案。

【问题 1】(10 分)

        Redis 支持主富的数据类型,并能够提供一些常见功能需求的解决方案。请选择题干描述的(a)~(g)功能选项,填入表 4-1 中(1)~(5)的空白处。

表 4-1 Redis 数据类型与业务功能对照表
数据类型 存储的值 可实现的业务功能
STRING 字符串、整数或浮点数 (1)
LIST 列表 (2)
SET 无序集合 (3)
HASH 包括键值对的无序散列表 (4)
ZSET 有序集合 (5)

【问题 2】(7 分)

        该网上社区平台需要为用户提供 7*24 小时的不间断服务。同时在系统出现宕机等故障时,能在最短时间内通过重启等方式重新建立服务。为此,开发团队选择了 Redis 持久化支 持。Redis 有两种持久化方式,分别是 RDB(Redis DataBase)持久化方式和 AOF(Append 0nly File)持久化方式。开发团队最终选择了 RDB 方式。

        请用 200 字以内的文字,从磁盘更新频率、数据安全、数据一致性、重启性能和数据文件大小五个方面比较两种方式,并简要说明开发团队选择 RDB 的原因。

        RDB磁盘更新频率更优,远远高于AOF的磁盘更新频率。

        RDB数据安全缓存明显优于AOF。

        RDB数据一致性要高于AOF。
        RDB是以数据存储,而AOF以文件存储,会有很多附加字符,文件大于RDB。

【问题 3】(8 分)

        缓存中存储当前的热点数据,Redis 为每个 KEY 值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis 选择"定期删除+惰性删除”策略。如果该策略失效,Redis 内存使用率会越来越高,一般应采用内存淘汰机制来解决。

        请用 100 字以内的文字简要描述该策略的失效场景,并给出三种内存淘汰机制。

【答案】

        本题考查数据库缓存的基本概念和具体应用。

【问题 1】解析

        本问题考查 Redis 数据库缓存产品基本数据类型的常见应用。
        (1)STRING 类型:常规的key/value 缓存应用,常规计数如粉丝数等;
        (2)LIST 类型:各类列表应用,如关注列表、好友列表、订阅列表等;
        (3)SET 类型:与LIST 类似,但提供去重操作,也提供集合操作,可实现共同关注、共同喜好、共同好友等功能;
        (4)HASH类型:存储部分变更数据,如用户数据等;
        (5)ZSET 类型:类似 SET 但提供自动排序,也可实现带权重的队列,如各类排行榜等。

        答案:

        (1)(a)
        (2)(b)、(g)
        (3)(c)、(d)
        (4)(f)
        (5)(e)

【问题 2】解析

        本问题考查 Redis 持久化存储的基本概念及应用。Redis提供了两种持久化存储的机制,分别是RDB(Redis DataBase)持久化方式和 AOF(Append 0nlyFile)持久化方式。RDB 持久化方式是指在指定的时间间隔内将内存中的数据集快照写入磁盘,是 Redis 默认的持久化方式。AOF 方式是指 redis 会将每一个收到的写命令都通过 write 函数追加到日志文件中。两种方式各有优缺点,大致的比较如下:
        (1)磁盘更新频率:AOF比 RDB 文件更新频率高。
        (2)数据安全:AOF 比 RDB 更安全。
        (3)数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF 通过 append 模式写文件,即使发生服务器宕机,也可通过 redis-check-aof 工具解决数据一致性问题。
        (4)重启性能:RDB 性能比 AOF好。
        (5)数据文件大小:AOF文件比 RDB 文件大
        该项目的实际需求是:在系统出现宕机等故障时,需要在最短时间内通过重启等方式重 新建立服务,因此重启性能是最需要考虑的因素,故该开发团队选择 RDB 方式。

        答案:

        磁盘更新频率:AOF比 RDB 文件更新频率高。
        数据安全:AOF 比 RDB 更安全。
        数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF 通过 append 模式写文件,即使发生服务器宕机,也可通过 redis-check-aof 工具解决数据一致性问题。
        重启性能:RDB 性能比 AOF好。
        数据文件大小:AOF文件比 RDB 文件大
        该项目的实际需求是:在系统出现宕机等故障时,需要在最短时间内通过重启等方式重 新建立服务,因此重启性能是最需要考虑的因素,故该开发团队选择 RDB 方式。

【问题 3】解析

        本问题考查 Rcdis使用过程中数据清除相关的概念。
        缓存中一般用来存储当前的热点数据,Redis 为每个KEY 值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis选择"定期删除+惰性删除”策略。
        “定期删除+惰性删除”策略也会存在失效的可能。比如,如果“定期删除”没删除KEY,也没即时去请求 KEY,也就是说“惰性删除”也没生效。这样,Redis默认的“定期删除+惰性删除”策略就失效了
        如果该策略失效,Redis 内存使用率会越来越高,一般应采用内存淘汰机制来解决。常见的内存淘汰机制有:
        (1)从已设置过期时间的数据集最近最少使用的数据淘汰。
        (2)从已设置过期时间的数据集将要过期的数据淘.
        (3)从已设置过期时间的数据集任意选择数据淘汰.
        (4)从数据集最近最少使用的数据淘汰
        (5)从数据集任意选择数据淘汰。

        答案:

        失效场景:如果“定期删除”没删除KEY,也没即时去请求 KEY,也就是说“惰性删除”也没生效。这样,Redis默认的“定期删除+惰性删除”策略就失效了。

        可采用的内存淘汰机制:

        (1)从已设置过期时间的数据集最近最少使用的数据淘汰。
        (2)从已设置过期时间的数据集将要过期的数据淘.
        (3)从已设置过期时间的数据集任意选择数据淘汰.
        (4)从数据集最近最少使用的数据淘汰
        (5)从数据集任意选择数据淘汰。

相关推荐

深入解析包裹信息管理系统:关系型数据库逻辑数据模型设计、超类实体与派生属性探讨-CSDN博客文章浏览阅读659次,点赞41次,收藏32次。本文探讨了关系型数据库开发中逻辑数据模型的设计过程,以包裹信息管理系统为例,详细分析了逻辑数据模型构建的任务,包括构建系统上下文模型、添加主键属性、非主键属性及规范化处理。同时,引入了超类实体的概念,用于抽象表示相似属性的实体。此外,还讨论了派生属性的识别与消除,以提升数据库设计的优化程度。https://shuaici.blog.csdn.net/article/details/1421820192015年系统架构师案例分析试题四-CSDN博客文章浏览阅读1.2k次,点赞35次,收藏40次。SQL 语句设计时,影响查询效率的设计原则是:●查询时尽量不要返回不需要的行、列;●需要进行多表连接查询时,尽量使用连接查询,避免使用子查询结构;●尽量避免采用 NOT IN、NOT EXIST、LIKE 等使用全表查询的操作;●尽量避免使用 DISTINCT 关键字https://shuaici.blog.csdn.net/article/details/1412211252017年系统架构师案例分析试题四-CSDN博客文章浏览阅读1.1k次,点赞49次,收藏43次。数据访问层常见的模式有 5 种 分别是:在线访问、Data Access Object、Data Transfer Object、离线数据模式、对象/关系映射(Object/Relation Mapping)。ORM,即 Object/Relationl Mapping,它在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的 SQL 语句打交道,只要像平时操作对象一样操作即可。https://shuaici.blog.csdn.net/article/details/1415622632019年系统架构师案例分析试题四-CSDN博客文章浏览阅读1.3k次,点赞72次,收藏48次。存在双写不一致问题,在写数据时,可能存在缓存写成功,数据库写失败,或者反之,从而造成数据不一致。当多个请求发生时也可能产生读写冲突的并发问题。 (a)从数据库中读取数据或读数据库; (b)更新缓存中 key 值或更新缓存; (c)数据库; (d)删除缓存 key 或使缓存 key 失效或更新缓存(key 值)。https://shuaici.blog.csdn.net/article/details/142059273

猜你喜欢

转载自blog.csdn.net/g984160547/article/details/142211259
今日推荐