OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Node.js 下如何利用redis快速实现函数cache化


分享到
关键字 开源   发布 open-node  1429368919791
注意 转载须保留原文链接,译文链接,作者译者等信息。  

open-cache [https://github.com/open-node/open-cache] 一个基于redis 的cache的函数库。


这个小工具的实现,我借鉴了underscore. memoize 的思路,对需要cache的函数不改写函数内部本身的实现,只需要把函数传递给open-cache,让它根据特定的条件来把函数加工成支持cache的函数


open-cache 库包被引入以后会提供一下几个方法


var cache = require(‘./open-cache’);


初始化cache, 端口,ip,options 是可选附件值,目前支持namespace, 避免多应用使用同一个redis-server冲突

使用前一定要先init,否则会报错

cache.init(port, host, options)


获取cache的值,根据key,done接受的参数第一个是error,第二个是cache的值

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的函数给加工好。至于怎么加工的你完全可以不去关心。他只需要问你几个问题,你回答就好了。

keyTpl, 一个字符串,里面可以包含{0},{1},…{n} 这样的东西,这样的东西会被函数调用是的参数替换,这样就能避免同一函数不同参数调用cache的冲突

func,这个就是你要加工的函数,这个函数必须要满足以下几个条件,这其实也是node.js里异步函数大家习以为常的写法

func 的参数最后一个一定要是callback,callback接收的参数第一个必须是error,第二个参数是结果。

life, 你希望这个函数的结果cache多久实效,单位是秒

bind, 一个可选参数,你希望你的 func 在执行的之后指定的内部 this


ok,之后cache函数会把加工好的函数返回给你。返回给你的这个函数自动有了cache的能力。用法依然保持了你一开始实现的用法。


大家可以直接去github clone这个库,看一下 test/index.coffee 里的用法就彻底明白了。

git clone https://github.com/open-node/open-cache


* 注,cache一般只用于读取,写操作千万别cache,否则可能带来灾难性后果。

社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 关键字 - 开源
  1. 几款开源的图形化Redis客户端管理软件
  2. Mongoose学习参考文档——基础篇
  3. Node.JS如何调用Chrome打开浏览器链接地址
  4. 开源的多行字符串工具: 在JS中整段地写HTML
  5. 使用NodeJS搭建邮件自动发送服务器
  6. 15个最好用的Node.JS后端框架
  7. Github Pages疑似被封: 再也不能用Pages搭建个人博客了
  8. wemall app商城源码android开发MD5加密工具类
  9. 【数据可视化】基础知识贴:10大关键术语
  10. wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号