一:访问统计
//访问统计
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
if($s=$memcache->get('a')) {
$s=$s+1;
$memcache->set('a',$s);
}
else
$memcache->set('a',1);
echo '访问结果为:'.$s;
?>
其实我们可以用increment方法代替上面的做法
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
if($s=$memcache->increment('a',1)) {
echo $s;
}
else
$memcache->set('a',1);
?>
二:数据压缩:
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$test=(str_repeat('jetwong',100000));
$memcache->set('b',($test));
?>
使用压缩:
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$test=(str_repeat('jetwong',100000));
$memcache->set('b',($test),MEMCACHE_COMPRESSED);
?>
使用情况说明:
前台比较 目前内存bytes 总共读取bytes_read 总共写入bytes_written
压缩前 700085 700081 416
压缩后 1131 1125 13
可能看到压缩后明显占用内存少了不少
Memcache内存的更新清理(delete flush)
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
/*设置值*/
$status = $memcache->getStats();
echo '设置前内存使用情况'.$status['bytes'].'
';
echo '设置后';
for($i=0;$i<9;$i++) {
$memcache->set('b'.$i,rand(1,99));
echo '
'.$i.'->'.$memcache->get('b'.$i);
}
/*查看设置的值*/
$status = $memcache->getStats();
echo 'delete前内存使用情况'.$status['bytes'].'
';
echo '
开始delete';
for($i=0;$i<9;$i++) {
$memcache->delete('b'.$i);
echo '
'.$i.'->'.$memcache->get('b'.$i);
}
/*查看flush使用的情况*/
$status = $memcache->getStats();
echo '使用flush前内存使用情况'.$status['bytes'].'
';
echo '使用flush情况:';
for($i=0;$i<9;$i++) {
$memcache->set('b'.$i,rand(1,99));
echo '
'.$i.'->'.$memcache->get('b'.$i);
}
$memcache->flush();
echo 'flush之后:';
for($i=0;$i<9;$i++) {
echo '
'.$i.'->'.$memcache->get('b'.$i);
}
$status = $memcache->getStats();
echo 'flush后内存使用情况'.$status['bytes'].'
';
?>
内存超量的测试(set)
我们把内存设为2M
./memcached -d -m 2 -p 11211 -u root
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
//600K左右
$test1= str_repeat('jetlee',100000);
//600K左右
$test2= str_repeat('jetlee',100000);
//600K左右
$test3= str_repeat('李连杰',200000);
//600K左右
$test4= str_repeat('连杰李',100000);
//200K
$test5= file_get_contents('http://img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG');
$test6= file_get_contents('http://img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg');
for($i=1;$i<=6;$i++) {
$j='test'.$i;
if($memcache->set($j,$$j)) {
echo $j.'->设置成功
';
$status = $memcache->getStats();
echo '内存:'.$status['bytes'].'
';
}
else {
echo $j.'->设置失败
';
}
}
?>
执行结果:
test1->设置成功
内存:600042
test2->设置成功
内存:1200084
test3->设置失败
test4->设置成功
内存:1200084
test5->设置失败
test6->设置失败
刚好印证我们的计算,不过20万的repeat为什么会失败,不是太了解,,,,,,
总结:
示例:
<!---->
//设置篇
if($data = $memcache->get('k',$v)) {
//显示我们的数据
}
else {
$data = get_from_database; //得到数据源
if(!$memcache->set('k',$data), MEMCACHE_COMPRESSED) //开始设置
log(); //不成功,记录失败信息
}
?>
分享到:
相关推荐
5. **压缩数据**:为了节省内存,Memcache扩展支持在存储时自动压缩数据,当数据大小超过一定阈值时自动启用。 6. **过期时间**:每个缓存项可以设置一个过期时间,过期后将自动从缓存中移除。 7. **自增/自减操作...
1. **分布式存储**:Memcache可以将数据分散存储在多台服务器上,实现负载均衡和高可用性。 2. **Key-Value存储**:数据以键值对的形式存储,便于快速查找和操作。 3. **内存存储**:所有的数据都存储在内存中,读写...
Memcache是一个广泛使用的分布式内存对象缓存系统,它能够存储和检索数据,包括动态网页内容,以减少数据库访问的负担。PHP作为流行的服务器端脚本语言,通过扩展与Memcache进行集成,为开发者提供了方便快捷的缓存...
17. Memcache::setCompressThreshold — 设置大值的自动压缩阈值,超过此值的数据会自动压缩。 18. Memcache::setServerParams — 允许动态修改服务器参数和状态。 19. memcache_debug — 此函数用于控制调试信息...
- **php集成**: 在php.ini中配置`session.save_handler = memcache`和`session.save_path`来启用memcache存储session,可以实现多服务器session共享。 **使用与命令** - **memcache命令行**: 通过telnet或者专用...
第二个示例展示了如何使用memcache进行计数器操作,通过获取、递增并设置'pid'键的值,实现了一个简单的计数器。 **四、memcache的优势** 1. **高速度**:由于数据存储在内存中,访问速度极快。 2. **分布式**:...
18. **`Memcache::setCompressThreshold()`** - 设置压缩阈值,当数据大小超过这个阈值时,数据会被压缩后再存储,以节省空间。 19. **`Memcache::setServerParams()`** - 动态设置与特定服务器的连接参数,如超时...
- **计数器**:使用原子增减操作实现计数器功能。 - **排行榜**:使用Sorted Set实现排名功能。 #### 37、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来? 使用`...
- **缓存分析**:考察缓存大小、Intel与AMD的L3缓存垂直差异、缓存未命中率和延迟,以及缓存行大小、对齐问题、缓存感知数据结构(如零填充)、在飞行数据压缩与解压缩、缓存行伪共享以及L3预取策略。 - **TLB...