OneIndex配置Redis为缓存系统
我使用的OneIndex是这个OneIndexN
引入
今天我在倒腾OneIndex配置时,了解到了缓存功能,观察了下所谓缓存的数据,其实就是预先请求接口吧文件URL缓存下来,然后再需要的时候直接提供而不用届时再去请求接口,大大提高性能,支持的缓存类型如下。

默认是用secache,这是PHP提供的一个单文件缓存支持,比起下面的filecache这种零散的小文件性能要更高,更多的这是为了考虑到PHP主机环境受限而提供的,在我这种有独立服务器的情况下,应该考虑采用独立的缓存数据库,mencache现在基本上都不用了,恰逢有Redis支持,可以直接连接到服务器上的Redis数据库。
首先要安装Redis支持,有包管理工具的操作系统可以直接安装php-redis,这里不再赘述。安装完成后,选择redis保存,就不会提示缺少相应环境了。
配置
但是保存设置之后我就开始迷惑了,配置在哪。Redis是需要指定服务器地址和端口的,甚至可能还需要进行认证,但是我没有看到页面中能有任何能配置这些东西的地方,故只能去翻源码。连接到服务器,可以看到源码中对于cache的支持在lib/cache/
下。
打开并编辑对于Redis提供支持的redis_.php
,发现他的默认配置是连接本地的服务器,构造函数中看到其实是能从外部传入配配置文件的,但是暂不清楚从哪进来的。不过好在他的默认配置不需要修改,直接就能连入本地的数据库,如果需要修改届时看来只能在这里进行修改了。

但是这还有个问题,构造函数在这里创建一个数据库连接之后就结束了,甚至没有认证和选择数据库的流程,于是百度了许久,发现大多都是直接连完Redis就完事,对于无密码,使用默认0号数据库来说确实没有问题,但显然我这个数据库带密码,而且0号数据库存放了其它数据,并不想将这些数据进行混淆。
找了半天只找到了如何进行认证,但几乎找不到如何切换数据库的说明,看来最后只能去找原项目的API文档,好在原项目并不难找,在建立数据库连接文档中,终于找到了切换数据库的API。看起来OneIndex并没有提供对这些额外配置的支持,因此只能直接再构造函数里面添加了,结果看起来就是这样。

这些数据就放到1号数据库从而能和0号独立开来,最后还要记得回到配置页面,吧缓存过期时间调长一点,最好配合计划任务中自动刷新缓存的间隔,默认是配置10秒钟,估计是为了短时间访问优化的,可以自行根据需求进行调整,这些缓存过期时间在Redis中会体现在过期时间(TTL)中。