当前位置: 首页 > news >正文

手机nfc网站开发百度爱企查电话人工服务总部

手机nfc网站开发,百度爱企查电话人工服务总部,无限在线观看免费视频,黄平网站建设在node项目开发过程中#xff0c;缓存常常被用来解决高性能、高并发等问题。在我们的实际项目中#xff0c;运用缓存的思路是内存缓存--接口--文件缓存。前面的总结中已经详细的说明了怎么实现和封装内存缓存和文件缓存。虽然二级缓存已经基本能够满足现在的所有场景… 在node项目开发过程中缓存常常被用来解决高性能、高并发等问题。在我们的实际项目中运用缓存的思路是内存缓存--接口--文件缓存。前面的总结中已经详细的说明了怎么实现和封装内存缓存和文件缓存。虽然二级缓存已经基本能够满足现在的所有场景需求但现在我们再加一级redis缓存从而使我们的项目更加稳定。redis的封装const redis  require(redis);const myredis { client:null, connect: function () { let RDS_PORT 6379, //端口号      RDS_HOST  94.191.**.**,    //服务器IP RDS_PWD **********, //密码 RDS_OPTS {}; //设置项 this.client redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS); let c: any this.client; c.auth(RDS_PWD, function () { console.log(通过认证); }); c.on(error, function (err:any) { console.log(redisCache Error err); }); c.on(ready, function () { console.log(redisCache connection succeed); }); }, init: function () { this.connect(); // 创建连接 const instance:any this.client; // 主要重写了一下三个方法。可以根据需要定义。 const get instance.get; const set instance.set; const setex instance.setex; instance.set function (key:any, value:any, callback:any) { if (value ! undefined) { set.call(instance, key, JSON.stringify(value), callback); } }; instance.get function (key: any, callback: any) { return new Promise(function(resolve,reject){ get.call(instance, key, (err: any, val: any) { resolve(JSON.parse(val)) }) }) }; instance.setex function (key: any, value: any, callback: any) { if (value ! undefined) { setex.call(instance, key, 30*60*1000, JSON.stringify(value), callback); } }; return instance; },};export default myredis.init();为了满足更多场景的使用我们这里对redis的set和get方法进行了重写并在结尾导出了新的redisclient实例 instance 在get 方法中为了在外部调用的过程中直接拿到数据我们使用了 Promise 封装了一下get方法。使用.............import rediscache from ../redis;.............async function apiCache(input_options: apicache_options): Promiseany { ............ let key: string if (options.keystr ! ) { key encryption.sha1(apicache: options.keystr) } else if (options.postdata ! null) { key encryption.sha1(apicache: options.url ;data: object_hash(options.postdata)) } else { key encryption.sha1(apicache: options.url) //根据页面路径生成key  } //redis缓存  let redis_cache  await rediscache.get(key);  if (redis_cache ! null){ return redis_cache; }; //内存缓存  let api_memery_cache  memorycache.get(key)  if (api_memery_cache ! null) { return api_memery_cache.body } else { //文件缓存 let api_file_cache await filecache.get(key) //尝试文件缓存 // console.log(api_file_cache) if (api_file_cache ! null) { // console.info(走文件)      memorycache.put(key, api_file_cache) //写入内存 refreshCache(key, api_file_cache.time, options) return api_file_cache.body } } // console.info(直接调接口) try { let aoptions: any { method: options.method, url: options.url, timeout: options.timeout, data: options.postdata, headers: options.headers } if (options.is_stream) { aoptions.responseType arraybuffer aoptions.responseEncoding binary } let back await axios(aoptions) // console.log(back) let backdata back.data; if (options.error_replace options.check_callback) { if (options.check_callback(backdata)) { } else { logger.error({ error_message: 接口返回数据验证失败, url: options.url }) backdata options.error_replace } } let cache_content { time: Date.now(), body: backdata }    rediscache.set(key, cache_content)     memorycache.put(key, cache_content) filecache.put(key, cache_content) if (options.success_log) { logger.info({ url: options.url, back: backdata }) } return backdata } catch (error) { logger.error({ error_message: error.message, url: options.url }) if (options.error_replace ! undefined) { return options.error_replace } else { throw error } }}export default apiCache完整的缓存中间件就不赘述可看以前的总结web建站小结 在上面的删减版的代码中为了方便观察将redis缓存的读写放在了最上面启动项目在redis桌面管理工具(RedisDesktopManager)中查看页面上对应的部分
http://www.zqtcl.cn/news/74987/

相关文章:

  • 模板网站没有源代码广州品牌策划有限公司
  • 大型网站一般用什么语言做的海口模板建站定制
  • 关于网站备案广州工程
  • php mysql网站开发试题a百姓装潢口碑怎么样
  • 杭州建站模板制作欧美简约风格网站设计
  • 福建省建设厅考试网站关于门户网站建设通报
  • 东阳实惠营销型网站建设厂家pc网站案例
  • 自己如何做网站关键词排名女性做网站
  • 长春做网站价格网站开发和app的区别
  • 品牌网站建设帮你大蝌蚪哪个网站开发好
  • 跨境电子商务网页制作与网站建设怎么做网站推广的步骤
  • 网站安全 重要性.net网站项目有哪些
  • 商务网站设计实训报告网站模板 介绍
  • 亚马逊网站联盟网站建设 维护 编程
  • 一般网站要多大空间外包加工网手工活
  • 免费个人网站源码php专业seo整站优化
  • 深圳网站开发制作公众号免费推广平台
  • 网站推广怎么样做安徽专业网站建设大全推荐
  • 网站规划与建设需求分析常州想做个企业的网站找谁做
  • 网站开发的整体职业规划百度广告推广费用一年多少钱
  • 做网站是怎么赢利的山西建网站
  • 中国建设部网站监理延续aws 知乎 wordpress
  • 局网站建设管理制度廊坊酒店网站建设
  • 莱阳有网站建设推广的吗网络维护与管理
  • 空间登录入口搜索引擎优化和关键词竞价广告的区别
  • 网站备案率是什么长沙seo关键词
  • 建网站要花费多少钱泰州市靖靖建设局网站
  • 国家中管局官方网站研究所建设要求wordpress博客平台推荐
  • 做个电商网站做医疗设备的网站
  • 微信做的团购网站汕头建设网站的公司