接上篇文本,千辛万苦终于拿到了access_token。

正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。目前,获取access_token接口的调用频率限制为2000次/天。

所以我们将把它存起来,对于access_token的存储,可以考虑存储在文件、数据库或内存中。

这里我们就使用缓存Memcache存储及更新access_token(Memcache是一个高性能的分布式的内存对象缓存系统,将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。)

在 1.4.5 版本以前 memcached 可以作为一个服务安装,由于公司项目使用的就是1.4.5之前的版本,下载好解压,复制到你的服务器

C:\Users\Administrator\Desktop\memcached\memcached.exe -d install

  

服务里面会多一个memcached的服务,然后

C:\Users\Administrator\Desktop\memcached\memcached.exe -d start 或者右键启动

Memcache就装好了。

然后做为一个前端开发,就要去写后端代码了,首先引入依赖的dll

后端语言c#

    public class WxCache
{
public string access_token { get;set;}
public int expires_in { get;set;}
}

  

        public string GetToken() {
//因为服务是装在服务器上的,这里的ip就写127.0.0.1,端口是默认的11211
//可以改,没试到就不说了,大家自行百度
//这里的MemCache已经是封装过后的,做了一些初始化配置
MemCache cache = new MemCache(new[] { "127.0.0.1:11211" }, "");
//判断是否有token,没有就发请求
if(string.IsNullOrEmpty(cache.Get<string>("token"))){
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("获取token的url");
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
var result = JsonConvert.DeserializeObject<WxCache>(retString);
myStreamReader.Close();
myResponseStream.Close();
//拿到的数据反序列化,token存起来
//MemCache可以设置过期时间,这里设置的是1个半小时
cache.Set("token", result.access_token, DateTime.Now.AddMinutes(90));
return result.access_token;
}
else {
//一个半小时内缓存还在,就用没有过期的token
return cache.Get<string>("token");
}
}

  

  结束,接下来就可以拿着access_token在前端做些事情了。

使用缓存Memcache存储access_token的更多相关文章

  1. 使用缓存Memcache存储更新微信access token

    关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_ ...

  2. 高性能文件缓存key-value存储—Memcached

    1.高性能文件缓存key-value存储—Redis 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文章中给出 ...

  3. memcache 存储单个KEY,数据量过大的时候性能慢!以及简单的memcache不适合用到的场景

    今天有人问到我:memcache存储大数据量,10K,100K,1M的时候,效果怎么样??我回答:不好,效果非常慢.对方问:为什么啊??我回答不上来...于是就找了点资料. memcached使用需要 ...

  4. 实现基于Memcache存储的Session类

    自主实现Session功能的类,基于文件方式存储Session数据,测试基本通过,还比较好玩,实际应用没有意义,只不过是学习Session是如何实现的. 使用基于文件的Session存取瓶颈可能都是在 ...

  5. python运维开发(十一)----python操作缓存memcache、redis

    内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数 ...

  6. Memcache存储大量数据的问题

    Memcache存储大数据的问题  huangguisu Memcached存储单个item最大数据是在1MB内,假设数据超过1M,存取set和get是都是返回false,并且引起性能的问题. 我们之 ...

  7. Memcache存储机制与指令汇总

    1.memcache基本简介 memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Memcach ...

  8. ASP.NET MVC用户登录(Memcache存储用户登录信息)

    一.多站点共享用户信息解决方案: 采用分布式缓存Memcache模拟Session进行用户信息信息共享 1.视图部分

  9. 分布式缓存Memcache和Redis

    引言 针对于如今计算机的CPU和网络设施,相应用程序来说,运行效率的瓶颈.已经不是代码的长度(实现同一个功能)和带宽了,而是,代码訪问资源的过程.即:让我们的程序慢下来的罪魁祸首就是IO操作. 程序从 ...

随机推荐

  1. 小甲鱼:Python学习笔记002_数组_元组_字符串

    创建普通数组 >>> member=["山东黄金","九阳股份"] >>> member ['山东黄金', '九阳股份'] ...

  2. oracle 权限

    一.介绍这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里.当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必须为其授予系统的权限: ...

  3. javaWeb正则表达式

    对于web来说,字符串的处理特别重要,而正则表达式是对字符串处理的利器,在字符过滤,验证方面都能看到她的身影. 今天需要处理一段json字符串,在用String.replaceAll的过程中,遇到了正 ...

  4. ThinkPHP中:add()和addAll()的区别

    1.add()是记录单条插入 // 添加一条数据 $User = M("User"); // 实例化User对象 $data['name'] = 'ThinkPHP'; $data ...

  5. vue学习之vue基本功能初探

    vue学习之vue基本功能初探: 采用简洁的模板语法将声明式的将数据渲染进 DOM: <div id="app"> {{ message }} </div> ...

  6. http://codeforces.com/contest/349

    A. Cinema Line time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  7. 【NOIP】OpenJudge - 15:银行利息

    #include<stdio.h>//银行利息 int main() { float a,b; int i,c,d; scanf("%f%f%d",&a,&am ...

  8. dos攻击命令

    net user //查看有哪些用户 net start //查看开启了哪些服务项目 net send ip "文本信息" //向对方发送消息(如果对方关了信使有可能会收不到) n ...

  9. Java面向对象 Main函数 静态的应用 单例设计模式

     Java面向对象 Main函数 静态的应用与单例设计模式 知识概要             (1)Main函数的细解 (2)静态的应用,静态变量,静态代码块,静态函数 (3)单例设计模式 1.M ...

  10. ubuntu环境下lnmp环境搭建(1)之Mysql

    1. vm下安装Ubuntu 1)下载镜像ubuntu-15.04-desktop-amd64.iso http://yunpan.cn/cF5dwV6zw33ef 访问密码 ecba(个人分享在36 ...