【小镇的技术天梯】微信投票实战,利用Redis存储session性能优化。

【为什么要用Redis?Redis快啊!而且Redis适合存储session这种不重要的信息,服务器断电session消失了就消失了】

【大家好,小镇又来了,自从上次解决了投票人数过多导致渣渣服务器卡死问题之后,小镇就一直在用浏览器F12 Network查看各种可以优化速度的方法】

【小镇优化的页面是点击进去后的页面,第一个页面图太多速度慢也没有办法,不过下次可以用Jquery的lazyload来按需加载就行了。不过小镇懒得弄了!重复的技术小镇不想用,慢就慢点吧~】

进入正题,微信开发中一个比较重要和核心的环节就是获取用户的openid(等于是用户的唯一标识符),然而获取openid的方法比较麻烦。要获取openid,必须要通过OAuth2.0来完成网页授权才能完成的,通过OAuth2.0来完成网页授权后,在经过用户许可后,就可以通过授权页面,获得用户的openid。

【小镇说的大白话一点就是,你的网页带些必要的参数发送到微信的服务器后,微信服务器根据你的参数进行授权并携带相应的授权参数跳转到你原来的页面】

如何通过OAuth2.0网页授权呢?要先通过申请高级接口功能,然后请自己看文档奋斗

【小镇的技术天梯】微信投票实战,利用Redis存储session性能优化。_第1张图片

反正就是你要获取用户openid,你要跳转两次网页,这真是浪费时间。然后小镇就想到了用mysql记录下用户的sessionid,然后用sessionid对应一个openid就是了。

【但是!小镇不喜欢做这种无聊的码农活儿,咱这次用内存数据库Redis,在单机上Redis的性能要比memcached要好点,而且redis支持的数据结构也多】

首先是安装Redis,单位的服务器是Linux,就按照老一套的方法安装就是了,就是这里需要改个源代码中的c文件,在Windows中安装就简单多了。然后安装php的redis扩展插件,生成so动态共享库放到php的扩展目录下就行了,这个大家应该都会的,不会的百度下哦~

然后在Linux中把Redis的服务器启动,命令么,./redis-sever -c redis.conf 之类的,然后试试./redis-cli,看看能不能进入redis的命令行,如果能进入的话Redis就算是装好了。

最后在php中敲入代码就行了。小镇这里的代码是这样的:

<span style="font-size:18px;">session_start();
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
$openId = $redis->get(session_id());

if (!$openId) {
//获取用户openid
    $tools = new JsApiPay();
    $openId = $tools->GetOpenid();
    $redis->set(session_id(), $openId);
}</span>
【哈哈哈,很简单把。就是存储个键值对呗,网上还有高级点的方法,就是改php的配置文件,让session的存储路径直接存到redis服务器的地址上去,不过小镇就不烦着弄这个了,反正性能也不会快到哪里去】

你可能感兴趣的:(【小镇的技术天梯】微信投票实战,利用Redis存储session性能优化。)