开发者社区> 晚来风急> 正文

如何用Redis缓存改善数据库查询性能?

简介:
+关注继续查看

调整一个关系型数据库以实现高性能查询是一个困难的工作。如果优化数据模型和调整查询方式都不起作用,那么管理员可以使用一个诸如Redis这样的缓存技术,这是一个提供内存内和持久数据存储的关键值数据存储方法。

Redis缓存 查询优化 数据模型调整

因为Redis具有在数据存储中快速读写数据的能力,所以它比关系型数据库更具有性能优势。但是,关键值数据存储是简单的;它们没有一个类似于SQL的查询语言或者结构化的数据模型。相反,它们有一个把键值作为与数值相关的标识符来使用的简单字典或哈希模式。管理员使用这些键来进行数值的存储和检索。

键值存储是简单快速的,它可用于实现丰富数据模型和关系型数据库查询功能的良好匹配。但是,有时候还是使用键值与关系型数据库的组合为好。此外,还有很多商业支持的键值数据库,包括Redis、Riak和Areospike等。

为了运行一个优化热门查询性能的Redis缓存,首先应确定你希望缓存的查询结果。其中,应重点关注最常用的和最耗时的查询,然后确定应缓冲查询中的数据。为简便起见,缓存查询返回的所有列值。

为键值定义一个命名约定;可以使用行主键和列名的组合来构造密钥。例如,其主键ID为 198278的 产品描述可以‘198278:descry’的键值进行存储。确保你的命名规则是简单和规则驱动的,以便于使用最少的代码来实现键的程序化创建。

接下来,确定是运行Redis缓存作为自助管理服务还是运行亚马逊的ElastiCache。运行用户自己的Redis实例将赋予管理人员对缓存的完全控制权。而这一控制权意味着灵活性,例如当有超出容量的情况出现时,管理人员有使用现有保留实例的权力。

此外,当用户想要把应用程序从一家云计算供应商迁移至另一家时,他们会发现完整的管理控制权限是非常有用的。

如果用户选择运行一个自助管理的Redis实例,可下载服务器。Redis的客户端支持30种以上编程语言——从Java和Python到Prolog和Smalltalk。

已经使用AWS环境的企业可能会想要使用ElastiCache。除了诸如托管打补丁这样的优点之外,亚马逊ElastiCache支持一系列高速缓存优化的节点类型,具体包括从中型到2X的m3节点、从大型到8X的r3节点以及从微型到中型的t2节点。ElastiCache还支持一些上一代的节点类型,例如选择m1、m2、t1和c1节点。

ElastiCache还支持多个可用区。如果有一个节点发生故障,一个读操作复制节点将取代故障节点。任何需要确保应用程序运行的DNS变更都是自动完成的,同时会创建一个新的读操作副本。ElastiCache允许基于单位时间使用率的按需定价模式,以及一年期或三年期预付费的节点使用条款。完整定价清单可以在这里找到。

如果使用Redis缓存和亚马逊ElastiCache,那么就可以从AWS管理控制台启动一个集群。除了设置Redis服务外,还需要修改应用程序代码以便于能够使用缓存。一个常用的模式就是,检查缓存中是否存在有一个键值,如果没有就执行一个SQL查询以检索数据,然后将其存储在缓存中。当缓冲存满时,可以配置Redis删除旧数据,这样就不需要用户使用专门的代码来处理缓存存满的情况了。


本文作者:佚名

来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
应用层缓存提升性能|学习笔记
快速学习应用层缓存提升性能
40 0
应用层缓存提升性能
应用层缓存提升性能
57 0
金鱼哥RHCA回忆录:DO447构建高级作业工作流--使用事实缓存提高性能
第十二章 构建高级作业工作流--使用事实缓存提高性能
174 0
实体列表缓存(最土的办法实现百万级性能)
在实际项目开发中,经常遇到有一些表数据很少(1000行以内),不会频繁修改(平均每行几个小时才会修改一次),例如配置表、分类表等。 这样的表,往往可以接受三五秒甚至更长的延迟,正是最适合使用缓存的地方。 实体缓存:一次性加载全表数据进入内存,供上层多维度查询!
91 0
Spring之路(46)–缓存:提升性能的大杀器,用与不用缓存区别就是这么大
本文目录 1. 啥是缓存 2. 缓存在哪里 3. 到底能提升多少 4. 总结
86 0
8月27日 Spark 社区直播【OAP Spark 优化介绍: 通过索引和缓存优化交互式查询性能】
简单介绍OAP的总体蓝图。同时详细介绍其中的一个具体优化,使用索引和缓存来解决交互式查询性能挑战。
1673 0
Confluence 6 缓存性能示例
有关 Confluence 的缓存性能如何设置,让我们看看下面的表: 缓存(Caches) % 使用的缓存(Used) % 有效率(Effectiveness) ...
1069 0
SqlServer性能优化之获取缓存的查询计划中的聚合性能统计信息
SqlServer性能优化之获取缓存的查询计划中的聚合性能统计信息
4175 0
Databricks缓存提升Spark性能--为什么NVMe固态硬盘能够提升10倍缓存性能(原创翻译)
我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改。 1、在本博客中,我们将介绍这个新特性的两个主要特点:易用性和性能。
3049 0
+关注
晚来风急
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
高性能Web架构之缓存体系
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载