admin 管理员组文章数量: 1184232
2024年4月14日发(作者:什么是字符串常量)
基于Redis技术的页面缓存研究
作者:秦溧 艾青
来源:《科技风》2021年第12期
摘要:随着互联网业务的逐渐扩大,用户对相同数据访问的相对集中,从而出现关系型数
据库管理系统负担加重,数据库响应效率低下,浏览器上响应延迟等重大问题。基于此,提出
采用Redis高性能分布式内存缓存服务器的这一技术,来解决因数据量过大导致页面响应延迟
的问题。通过实验以及和传统关系型数据库对比的结果表明,利用缓存技术查找数据,可以在
一定程度上减少对数据库的访问,同时加快Web等应用的响应速度,提高用户体验感。
关键词:Redis;Sql;缓存;数据库
中图分类号:TP311.5文献标识码:A
目前我们所设计的系统采用的是关系型数据库,将数据存储到该系统中,再通过服务器从
中获取数据,并在浏览器上显示出来。但随着数据量逐渐增大,用户度对相同数据访问的集
中,就会出现关系型数据库管理系统负担加重,数据库响应效率低下,浏览器上响应延迟等重
大问题。特别是当我们在开发Web应用时,前端界面成为了不可获取的一部分,但是每次用
户对我们的网页进行访问时,都要重新加载一次静态资源,从而加重服务器的负担,造成网上
显示延迟等问题,在很大程度上影响了用户体验感。基于以上问题,本文结合Redis高性能分
布式内存缓存服务器技术,对页面进行分布式管理。并通过实验和对比证实了利用缓存技术查
找数据,可以在一定程度上减少对数据库的访问,同时加快Web等应用的响应速度,提高用
户体验感。
1 Redis概述
1.1 Redis的特性
Redis是一个基于键值对的存储结构的系统,也是类属于NOSQL的一种,它可以利用多
种不同的键值对数据类型来满足于不同的存储需求,Redis优势主要包括:
(1)性能高。由于Redis是NoSql数据库,Redis的所有操作都是直接操作于内存之中,
它的运行速度相比较于MySQL这一类传统的关系型数据库,就好比是在内存中进行读写和在
硬盘中进行读写的差距;
(2)可使用的数据类型非常丰富,Redis能够支持二进制的Hash,Set,String,List等数
据类型的操作;
(3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么
全部不执行;
(4)丰富的特性,Redis还支持publish/subscribe,通知,key过期等等特性。基于上述优
势,Redis技术最大的应用场景就是用来做缓存。缓存技术可以大大减轻服务器的压力,减少
数据丢失,提高系统中数据的一致性和完整性。[1]
Redis对于不同的常见数据类型来说,指令既有相同的,也有针对不同数据类型的特殊指
令。同时Redis具有Java版本客户端Jedis,Jedis拥有Java的主要特性之一多线程处理,通过
线程来优化系统资源,通过线程操作Redis的数据,并根据实际情况对线程进行回收,极大的
提高的Redis的使用效率。在提高数据获取速度时,我们需要用一些缓存技术,Redis的最大
优势在于可将数据缓存到内存并能够分片存储,同时拥有很高的读写效率。[2]
在这个基础之上,Redis还可以使用各种不同方式的排序,以此来满足各种不同业务的需
求,为了不影响查询数据的速度,数据一般都是先在内存中缓存下来,区别就是Redis会在经
过一段周期后的将更新后的数据重新在磁盘中进行写入和覆盖,又或者会把进行修改的操作写
入记录文件中,再将此文件追加到之前的記录文件中。前者为默认的RDB存储模式,所谓
RDB,就是将数据写入到一个临时的文件。等到持久化结束之后,用这个临时文件,替换掉上
次旧的持久化的文件,从而达到恢复数据的目的。优点,是只需要通过使用单独子进程来进行
持久化操作,并不需要主进程进行任何的IO操作,从而保证了redis的高效性;缺点,RDB会
间隔一段时间再进行持久化操作,如果在持久化期间,redis发生了故障,会出现数据的丢失
情况,所以这种方式更适合对数据要求不严谨的时候。由于只需要对界面的数据进行缓存,所
以本文采用RDB存储模式技术便可达到需求。
1.2 Redis存储机制
其存储机制默认设置为如果更改了一个Key,则间隔900秒之后进行一次持久化存储。如
果更改了十个Key则300秒之后进行一次持久化存储,如果更改一万个Key则自修改之时
起,一分钟之后进行一次持久化存储,持久化完成后,将临时文件替换掉旧的RDB。
使用RDB恢复数据也非常简单,实际上只需重启Redis服务即可完成。启动的时候,
redis的sever会从文件中先同步数据,第二种方式是AOF,是将执行过的指令记录
下来,数据恢复时,按照从前到后的顺序再将指令执行一遍从而实现数据的恢复。优点,可以
保持更高的数据完整性。例如,如果设置追击File的时间是一秒,那么一旦Redis发生了故
障,最多只会丢失那一秒的数据。且如果日志写入不够完整,支持通过RedisCheckAof来进行
日志修复,Aof文件没备注right之前可以删除其中的某些指令。缺点,aof比rdb文件大,且
恢复速度慢,因为它是以记录操作数据为主的。
此外,通信业务的数据大部分都是数字信息,如手机号码、imsi码等,采用az,AZ,09
组成的62进制替代10进制可以大大的节约内存,手机号码可以从11位压缩到6位,imsi码
可以从15位压缩到9位。由此可以进一步节约内存。[3]
redis的应用目前已经十分广泛,国内的淘宝,新浪,以及国外的GitHub等都在使用Redis
的缓存服务。
当然,在使用Redis缓存技术之前,必须搭建分布式数据存储系统。为了进一步提高
Redis的分布式数据存储的效率,必须同时要考虑到数据库的负载情况,因此在开发时还需要
额外搭建另一个分布式存储系统。传统的关系型数据库采用中央处理器或者是内存的使用来进
行代价的评估,但对于这种系统的存储方式和数据类型往往不是很全面。在实际运行的过程
中,对多类资源数据进行实时的统计,当完成对执行处理任务的线程后,完成对永不服务的主
线程的响应,再以此为基础,确定各个影响数据存储有效性的影响因素,实现对分布式数据的
可靠性评测和存储。[4]
2 采用Redis进行页面缓存的设计方案,以及后台配置文件的编写
2.1 Redis解决页面缓存问题的方案设计
Redis作为一个NoSQL数据库,它的简单易用是它最主要的特点。它的本质其实是和布隆
过滤器[5]类似,只是作为一个服务器和数据库之间的一个缓冲区,当用户要访问数据库时,
先访问Redis,如果Redis中有所需要的数据,便直接取出,返回到服务器;如果没有,便去访
问数据库,将数据库中的数据返回给服务器,同时将数据保存一份到Redis中,便于下次的取
和用。
根据此特性,我可以解决页面缓存的问题。实际上,我们的前端界面的静态资源,对用户
体验感影响最大的,便是我们界面上的图片信息,因为这是用户最容易注意到的,也是经常在
改变的,所以我们需要将界面上的图片信息,缓存到我们的Redis数据库中。
由于Redis存储机制是以键值对的形式进行存储的,因此,我们只需要通过后端来实现,
将图片的索引作为键,将图片的路径等信息以JSON的形式作为值缓存到Redis中,从而达到
无需访问数据库,便可加载图片的目的。当然,如果我们后期需要对图片进行更新,用户也只
需要重新加載一次页面便可更新Redis中的缓存信息。
2.2 Redis缓存技术设计流图
该图用于展示服务器在进行数据存取时和Redis以及数据库之间的交互流程,如图1所
示,当服务器要获取相应的数据时,先从Redis中获取,如果命中,则直接返回给服务器;如果
未命中,则再从数据库中获取,获取到数据后,返回给服务器,并更新Redis中的内容。
2.3 Redis配置文件信息
配置使用Redis所需要的相关信息,如图2所示:
(1)se:数据库索引,在使用Redis时,由于Redis有16个内置库,需
要标明使用哪个数据库,默认是用的是下标为0的库,这里设置的是索引为1的库;
(2):Redis服务器地址,由于Redis是分布式的缓存数据库,所以需要
单独部署到一台计算机上,这里部署到的是Linux虚拟机上,虚拟机的IP地址是:
192.168.220.128,所以Redis的服务器地址是:192.168.220.128;
(3):Redis服务器连接端口,Redis的配置文件中,端口号默认配置为
6379;
(4)rd:Redis服务器连接密码,其实Redis默认连接是没有密码的,
这里为了保险起见在Redis的配置文件中设置连接Redis的密码为:imooc;
(5)ive:连接池最大连接数,这里可以设置同时访问Redis的连
接数量,如果设置为负值则表示没有连接的限制;
(6)t:连接池最大阻塞等待时间,是指建立连接的最大等待时
间,毫秒为单位,如果是负值,则表示永远等待;
(7)e:连接池最大空闲连接,如果超过最大空闲连接数,会将对
象丢弃;
(8)e:连接池最小空闲连接,如果小于最小空闲连接数,会创建
新的连接对象,以此来保持空闲连接数量大于等于最小空闲连接数;
(9)t:连接超时时间。
3 实验结果及分析
本文通过采用RedisDesktopManager图形化Redis管理工具来对实验结果进行分析和研
究。
如图3所示,在db0这个数据库中,有8个数据键,这8个数据键分别对应8种不同类别
的图片资源信息,如表1所列:
这样,在获取value1所对应的值时,只需要在后端通过键shopcategorylist_allfirstlevel,便
可直接在Redis中获取到值,而无需再次通过数据库进行查询操作,极大程度上改善了系统的
效率。将不使用Redis的传统关系型数据库和采用Redis的数据库进行对比,会发现采用Redis
有以下好处,如表2所列:
4 结语
基于Redis技术的分布式数据存储方法,可以解决因数据量逐渐增大,用户对相同数据访
问的集中,而出现关系型数据库管理系统负担加重,数据库响应效率低下,浏览器上响应延迟
等重大问题。本文通过实验以及对比证实了可以利用缓存技术查找数据,可以在一定程度上减
少对数据库的访问,同时加快Web等应用的响应速度,提高用户体验感。
参考文献:
[1]宁方美,贺雪梅,牟晋娟.SpringBoot集成Redis缓存技术在企业一卡通系统中的应用[J].
电子技术与软件工程,2019(24):133134.
[2]叶朋.网站访问性能优化的研究与实现[D].哈尔滨理工大学,2020.
[3]徐茂红,王飞,张明.基于大数据量的Redis技术应用与研究[J].信息技术与信息化,
2019(11):228230.
[4]宋云奎,吴文鹏,赵磊,莫剑峰,黄俊涛.基于REDIS的分布式数据存储方法[J].计算机
产品与流通,2020(08):106.
[5]王伟晨.基于布隆过滤器算法的数据检索误判率研究[J].计算机产品与流通,2020
(03):260261.
基金项目:辽宁科技大学大学生创新创业训练计划资助项目(2)辽宁科技大
学优秀人才项目(2018RC05)
作者简介:秦溧(2000—),男,重庆荣昌人,本科在读生,软件工程专业。
*通讯作者:艾青(1980—),男,汉族,辽宁辽阳人,博士,副教授,硕士生导师,从
事软件工程、机器学习、人工智能研究。
版权声明:本文标题:基于Redis技术的页面缓存研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713105119a620110.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论