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/
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/guixiaoming/p/5408854.html