zoukankan      html  css  js  c++  java
  • secache 详解

    介绍下secache缓存,它是属于文件缓存。简单来说,文件缓存就是把缓存数据存储到文件系统 (硬盘)中了,比 内存缓存要慢一些,但是也是有一点优点的。

    1.磁盘容量大,

    2保存到硬盘,说明 掉电后数据不会丢失,比较可靠

    3.使用 固态硬盘的话,速度有了一定提高;同时扩展容易,可以使用磁盘阵列,分布式处理等进行大规模的存储和管理。

    而secache的优势(网上介绍):

      纯php实现, 无须任何扩展,支持php4 / 5
        使用lru算法自动清理过期内容
        可以安全用于多进程并发
        最大支持1G缓存文件
        使用hash定位,读取迅速。
     
    下面来一个secache里面的demo:
     
    <?php
    require('../secache/secache.php');
    $cache = new secache;
    $cache->workat('cachedata');
    
    function microtime_float(){
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
    
    $begin_time = microtime_float();
    
    for($i=0;$i<1000;$i++){
    
        $key = md5($i); //You must *HASH* it by your self
        $value = str_repeat('No. <strong>'.$i.'</strong> is <em style="color:red">great</em>! ',rand(1,10)); // must be a *STRING*
    
        $cache->store($key,$value);
    }
    
    echo '<h2>Insert x 1000 = ' .( microtime_float() - $begin_time) .' ms</h2>';
    echo '<hr /><h2>test read</h2>';
    
    for($i=0;$i<1000;$i+=200){
    
        $key = md5($i); //You must *HASH* it by your self
        if($cache->fetch($key,$value)){
            echo '<li>'.$key.'=>'.$value.'</li>';
        }else{
            echo '<li>Data get failed! <b>'.$key.'</b></li>';
        }
    }
    ?>
    

      需要提前知道的知识,secache是键值对的二进制数据库,使用Hash索引方式快速查找定位到相应文件在数据文件的位置,且采用拉链法解决冲突。注意 需要hash处理

    大致的过程就是,

      实例化缓存类后,读缓存文件,内部做关于缓存文件的相关初始化和逻辑,然后 两个重点方法 --存缓存值和 取缓存内容 --
    $cache->store($key,$value);   和    $cache->fetch($key,$value)
    使用时注意下:
    • 键需要自己做has处理,最长32为(超过了可以在php.ini中修改)
    • 值必须是字符串,如果为对象请自己先serialize
    • 最大支持1g的缓存文件哦


    总体来说 ,比较简单。如果不理解,可以尝试看下 这篇文章,http://blog.csdn.net/xuxujian/article/details/7315566

    (此外secache 下载链接)http://code.google.com/p/secache/
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    DbHelper数据操作类
    获取cpu序列号,硬盘ID,网卡MAC地址
    用户必备资料 103个Windows XP运行命令
    在Web.config配置文件中自定义配置节点
    Microsoft.NET PetShop4架构与技术分析
    数字转英文(货币)大写(vb)
    如何计算dba_tables中的avg_row_len.
    行选移与行链接的介绍
    如何使用动态SQL
    如何导致全表扫描原因
  • 原文地址:https://www.cnblogs.com/guixiaoming/p/5408854.html
Copyright © 2011-2022 走看看