Node.js 下如何利用redis快速实现函数cache化
发布日期:2016-4-18 22:4:9
Node.js 下如何利用redis快速实现函数cache化 说明:open-cache [https://github.com/open-node/open-cache]为一个基于redis 的cache的函数库。 这个小工具的实现是我借鉴了underscore. memoize 的思路,对需要cache的函数不需要改写函数内部本身的实现,不像mssql,只需要把函数传递给open-cache,让它根据特定的条件来把函数加工成支持cache的函数。 open-cache 库包被引入以后会提供一下几个方法,如下所示: var cache = require(‘./open-cache’);
使用前一定要先init,否则会报错,代码如下所示: cache.init(port, host, options) 获取cache的值,根据key,done接受的参数有两个:
cache.get(key, done) 设置cache值, 这个格式相信不用我说大家也知道是什么含义,唯一需要注意的是life的单位是秒,代码如下所示: cache.set(key, value, life, done) 删除某个cache值,代码如下所示: cache.del(key, done) 以上这些方法平淡无奇,由于几乎每一个做类型的库都会提供这些。而这些只是最基础的东西,所以我不推荐大家直接使用上面这(get,set,del)三个函数, 如果你直接使用这三个以为着对你目前系统的改造的工作量比较大,我推荐大家使用下面这个函数,代码如下所示: cache(keyTpl, func, life, bind) cache本身就是一个函数,作用就是帮你把你需要做cache的函数给加工好。至于怎么加工的你完全可以不去关心。
ok,之后cache函数会把加工好的函数返回给你。返回给你的这个函数自动有了cache的能力。用法依然保持了你一开始实现的用法。 大家可以直接去github clone这个库,看一下 test/index.coffee 里的用法,你就彻底明白了。 git clone https://github.com/open-node/open-cache * 注,cache一般只用于读取,写操作千万别cache,否则可能带来灾难性后果。 以后会更新一些mssql的问题,关注mssql的敬请期待。
|