服务优化之一(初始化数据压缩存储优化)

             有一段时间没上blog了,讲讲最近学到的,觉得有点用的知识,我们一般网站构建的过程中,访问压力最大的是什么?是首页,首页的更新频率有多快,如果是实时更新,不在我要说的范围之内,如果不是,那么我们可以考虑一下,使用页面初始化数据缓存。

1. 什么是初始化数据

页面刚进来的时候第一眼所看到的没有上拉刷新或下拉加载动作之前的数据。

2. 如何缓存

我们可以根据模块 控制器 方法名 业务名称等一系列的组成相关的key

存入拿到的数据,存储的方式大概可以使用如下几种:(伪代码 并不完整 主要说明思想)

(1) mysql 存储

 $data = array('一系列的数据组成的数组');   //data为某个数据接口初始化时的返回结果
    $content = bin2hex(gzcompress($data));    
    $module_name = 'goods_index_list';
    $result=mysql_query( "insert into initdata (module_name,content) value ('$module_name','$data')");//压缩内容插入到数据表中  
      
    //查询
    $query = "select content from initdata where module_name=$module_name";   
    $result = mysql_query($query);  
    $resdata = @gzuncompress($result["content"]);  


(2) redis 存储

    $data = array('一系列的数据组成的数组');   //data为某个数据接口初始化时的返回结果
    $module_name = 'goods_index_list';
    $redis->hset($module_name,json_encode($data));
    $resdata = json_decode($redis->hget($module_name),true);


(3) mongo 存储

 $data = array('一系列的数据组成的数组');   //data为某个数据接口初始化时的返回结果
    $module_name = 'goods_index_list';
    $mongo->data = array($module_name=>$data);        
    $mongo->insertData('initdata');
    $resdata = $mongo->selectCollection('initdata')->find(array('module_name'=>$module_name));

3. 小结

其实,首页是数据访问最频繁的页面,做数据初始化缓存很有必要,这样不需要实时查询数据库,可以减轻数据库很大一部分压力,当然,数据更新相当频繁的不建议这么做了。

最后要注意:数据源更改,及时刷新缓存。多个数据源更新,我们可以做相关的定时脚步实现,避免复杂的缓存更新。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值