Node.js 在nodejs中设计一个简单的缓存管理器来管理磁盘上的文件
我的服务器接收输入数据并生成输出文件。我需要缓存这个输出文件,当用户再次请求输入时,服务器将立即返回输出文件。缓存管理器需要:Node.js 在nodejs中设计一个简单的缓存管理器来管理磁盘上的文件,node.js,caching,redis,lru,Node.js,Caching,Redis,Lru,我的服务器接收输入数据并生成输出文件。我需要缓存这个输出文件,当用户再次请求输入时,服务器将立即返回输出文件。缓存管理器需要: 条目:inputId->已处理文件(缓存文件)的路径 许多服务器进程可以同时设置和获取缓存项 限制缓存文件的总大小,如果磁盘已满,请删除旧的缓存文件 缓存的文件过期并在一段时间后删除。若缓存命中,则重置缓存文件的过期时间 服务器进程可能会崩溃,或者计算机可能随时关闭。缓存管理器可以丢弃不正确的数据,但保留有效的缓存文件 现在,我使用redis作为LRU缓存 inp
- 条目:inputId->已处理文件(缓存文件)的路径
- 许多服务器进程可以同时设置和获取缓存项
- 限制缓存文件的总大小,如果磁盘已满,请删除旧的缓存文件
- 缓存的文件过期并在一段时间后删除。若缓存命中,则重置缓存文件的过期时间
- 服务器进程可能会崩溃,或者计算机可能随时关闭。缓存管理器可以丢弃不正确的数据,但保留有效的缓存文件
- inputId->filePath和过期时间
- 排序集:inputId->文件的上次访问时间
- 将3个lua脚本写入setCache(inputId,filePath)、getCache(inputId)、removeCache(inputId)
- 定期检查磁盘空间以删除最近使用最少的文件
- 侦听redis密钥过期以删除文件缓存的事件
我需要一些关于我的设计的意见。我需要重新发明轮子吗?(stackoverflow不允许查找库或文档)lua脚本是否与带有LOAD和EVAL的redis服务器一起运行?是。redis客户端使用load和eval命令在redis服务器中运行lua脚本。lua脚本是否与具有load和eval的redis服务器一起运行?是。redis客户端使用load和eval命令在redis服务器中运行lua脚本。