刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题四(共25分)

阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3。

【说明】

某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。

通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存(Redis)的混合架构实现。

经过规范化设计之后,该系统的部分数据库表结构如下所示。

供应商(供应商ID,供应商名称,联系方式,供应商地址);

药品(药品ID,药品名称,药品型号,药品价格,供应商ID);

药品库存(药品ID,当前库存数量);

订单(订单号码,药品ID,供应商ID,药品数量,订单金额);

【问题3】(7分)

该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。

(1)Redis的数据类型包括String、Hash、List、Set和ZSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。

(2)请用200字以内的文字解释说明解决Redis和MySQL数据实时同步问题的常见方案。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)ZSet

(2)读数据时先读取Redis中的key,如读到且未失效则返回key对应的数据:如读不到或key失效,则读取数据库,并同步Redis;写数据时先写数据库,并设置内存对应的key失效。


解析:

(1)当前热销药品排名功能需要实时更新和排序,而Redis的ZSet(有序集合)类型能够按照score进行有序排列,适合用于记录药品的热销程度(如根据销售数量或金额等)并进行排序,因此选择ZSet数据类型。
(2)解决Redis和MySQL数据实时同步问题的常见方案是采用读写分离的策略。读数据时,优先从Redis中读取,因为Redis的读取速度远高于MySQL,这样可以大大提高查询性能。如果Redis中的数据不完整或已过期,则再从MySQL数据库中读取数据,并同步到Redis。写数据时,先写入MySQL数据库以保证数据的持久性,然后设置Redis中对应的key失效,这样在下一次读取时可以从MySQL中获取最新的数据并同步到Redis。这种方案可以确保数据的实时性和一致性。

创作类型:
原创

本文链接:【问题3】(7分)该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share