当前位置:首页 > 问答 > 正文

群辉上装个Redis其实挺简单,服务效率也能蹭蹭往上涨,真心推荐试试

(看到一篇知乎文章说)群辉上装个Redis其实挺简单,服务效率也能蹭蹭往上涨,真心推荐试试,我自己也是看了别人的分享后,在半信半疑中给自己的DS218+折腾了一下,结果效果出奇的好,所以也想把这份经验唠一唠。

为啥会想到在群辉这个NAS里塞个Redis呢?最开始是因为我跑在群辉Docker里的一个小网站越来越慢,那是个我自己写着玩的个人博客兼一些小工具,平时访问量不大,但有些页面需要实时计算或者频繁读取一些基础数据。(就像某个技术博主的案例里提到的)每次打开页面,感觉都要等那么一小会儿,数据库(我用的MariaDB)的灯就闪个不停,后来我琢磨,很多内容其实一天之内基本不变,比如文章分类、热门文章列表、网站基础设置这些,但每次访问都去查一遍数据库,确实有点“杀鸡用牛刀”,还慢。

这时候我就想起了Redis这个内存数据库,它最出名的就是当缓存用。(我记得是在某个通俗教程里看到的比喻)它就像是你家厨房里的一个备菜台,常用的葱姜蒜都提前切好放在手边,炒菜时随手一拿就行,不用每次都现去菜篮子里翻找、清洗、切碎,把网站里那些经常读但又不常变的数据扔进Redis,下次再需要时,直接从内存里读取,速度可比去硬盘里翻数据库快太多了。

然后就是动手环节了,在群辉上安装Redis,比我想象的简单一百倍。(方法基本就是参考了群辉官方的套件中心和一些社区教程)根本不需要什么高深的命令行操作,我用的DSM7.1系统,打开套件中心,直接搜索“Redis”,第一个结果就是官方提供的Redis服务器套件,点击“安装”按钮,等个一两分钟,就搞定了,安装完成后,在“主菜单”里会多出一个Redis的图标,点进去能看到简单的状态信息,比如是否运行、占用了多少内存等,端口号默认就是6379,也不用我去记。

群辉上装个Redis其实挺简单,服务效率也能蹭蹭往上涨,真心推荐试试

这种安装方式的好处是省心,群辉都帮你配置好了,开机自启什么的都不用管,但缺点就是版本可能不是最新的,而且配置选项比较固定,对于我这种只是用来做简单缓存的需求,已经是绰绰有余了,如果你想玩得更花一点,用Docker来安装Redis是更灵活的选择,可以自定义配置文件和数据存储路径,不过那需要稍微多懂一点点Docker的知识。

装好之后,关键一步是让我的网站程序能连接上它,我那个网站是用PHP写的,(我按照一篇名为《PHP网站连接Redis缓存实战》的帖子操作)需要在群辉上安装PHP的Redis扩展,这个也是在套件中心里完成的,搜索“PHP Redis”就能找到并安装,然后在我的网站配置文件里,加上了几行代码,指定Redis服务器的地址(就是群辉的内网IP)和端口号,再稍微修改一下程序的逻辑,在查询数据库之前,先问问Redis里有没有缓存好的数据,如果有就直接用,如果没有再去查数据库,并把结果存一份到Redis里,设置个过期时间,比如一小时。

群辉上装个Redis其实挺简单,服务效率也能蹭蹭往上涨,真心推荐试试

这一套弄完,重启一下网站服务,效果立竿见影,最明显的感觉就是页面打开“嗖嗖”的,尤其是首页和分类页这种公共页面,之前那种轻微的卡顿感消失了,通过群辉的资源监控一看,MariaDB的磁盘活动明显下降,CPU负担也轻了一些,而Redis进程只占了大概几十MB的内存,对于我群辉富裕的内存来说,简直是九牛一毛,这真是用一点点内存成本,换来了响应速度的大幅提升,这笔买卖太划算了。

除了给网站做缓存,(我还受到一个论坛里网友的启发)Redis在群辉上还能有些别的妙用,可以把它当作一个简单的消息队列,我写了个小脚本,用来处理一些耗时的任务,比如图片缩略图生成,当用户上传图片后,主程序不直接去处理,而是把任务信息“扔”进Redis的一个列表里,然后另一个专门的工作进程从列表里“取”任务来慢慢处理,这样用户就能立刻得到上传成功的响应,体验好多了,实现了异步处理,Redis的持久化功能也能保证即使群辉意外重启,队列里的任务也不会丢失。

当然啦,它也不是万能的,Redis毕竟是把数据放在内存里,(就像很多资料里强调的)所以你得确保群辉的内存足够用,重要数据不能完全依赖它,必须要有数据库作为最终存储,但对于提升服务响应速度、做简单的消息中转这类场景,它在群辉上真的是一把利器。

如果你也在群辉上跑了一些自己的小服务,感觉有点慢,不妨花上十分钟,照着套件中心那个简单的安装步骤试试Redis,整个过程没什么门槛,但带来的效率提升却是实打实的,这种低投入高回报的优化,试过之后大概率会后悔——后悔没早点试!它让我的老旧群辉设备又重新焕发了活力,感觉性能又够我用上好一阵子了。