- 浏览: 2542492 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
查看当前的memcache连接数:
#netstat -n | grep :11211 | wc -l
haim参数 memcached -d -m 1500 -u backup -p 13000 -c 2048 -P /usr/local/memcached/tmp/memcached.pid
--------------------------------- mem和内存
每台memcached服务器仅启动一个memcached进程。分配给memcached的内存为3GB,启动参数如下:
/usr/bin/memcached -p 11211 -u nobody -m 3000 -c 30720
由于使用了x86_64的操作系统,因此能分配2GB以上的内存。32位操作系统中,每个进程最多只能使用2GB内存。也曾经考虑过启动多个分配2GB以下内存的进程,但这样一台服务器上的TCP连接数就会成倍增加,管理上也变得复杂,所以mixi就统一使用了64位操作系统。
另外,虽然服务器的内存为4GB,却仅分配了3GB,是因为内存分配量超过这个值,就有可能导致内存交换(swap)。连载的第2次中前坂讲解过了memcached的内存存储“slab allocator”,当时说过,memcached启动时指定的内存分配量是memcached用于保存数据的量,没有包括“slab allocator”本身占用的内存、以及为了保存数据而设置的管理空间。因此,memcached进程的实际内存分配量要比指定的容量要大,这一点应当注意。
mixi保存在memcached中的数据大部分都比较小。这样,进程的大小要比指定的容量大很多。因此,我们反复改变内存分配量进行验证,确认了3GB的大小不会引发swap,这就是现在应用的数值。
memcached -d -m 1024 -u root -l 172.25.38.70 -p 12000 -c 4096 -P /tmp/memcached.pid 12000
-p 12000 端口
-m 1024 内存设置 1024
-c 4096 同时连接数
-----------------------------------
/usr/local/bin/memcached -d -m 512 -u root -l 192.168.12.203 -p 13001 -c 1024
-d选项是启动一个守护进程daemon ,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,默认64MB
-M 内存耗尽时返回错误,而不是删除项
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.12.201,
-p是设置Memcache监听的端口,我这里设置了13001,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,与-d选择同时使用 ,我这里是保存在 /tmp/memcached.pid,
还有一些参数具体请参考:# /usr/local/bin/memcached -h
如果要结束Memcache进程,执行:kill `cat /tmp/memcached.pid`
----------memcache 替代session
/usr/local/bin/memcached -d -m 10 -u root -l 10.0.8.89 -p 13001 -c 512 -P /tmp/memcached13001.pid
原始
session.save_handler = files
mem:
session.save_handler = memcache
session.save_path = "tcp://192.168.0.26:13001,tcp://192.168.0.26:13002"
----------------------------------------consistent hash
在Memcache的实际使用中,遇到的最严重的问题,就是在增减服务器的时候,会导致大范围的缓存丢失,从而可能会引导数据库的性能瓶颈,为了避免出现这种情况,请先看Consistent hashing算法,中文的介绍可以参考这里,通过存取时选定服务器算法的改变,来实现。
修改PHP的Memcache扩展memcache.c的源代码中的
“memcache.hash_strategy” = standard
为
“memcache.hash_strategy” = consistent
重新编译,这时候就是使用Consistent hashing算法来寻找服务器存取数据了。
有效测试数据表明,使用Consistent hashing可以极大的改善增删Memcache时缓存大范围丢失的情况。
NonConsistentHash: 92% of lookups changed after adding a target to the existing 10
NonConsistentHash: 90% of lookups changed after removing 1 of 10 targets
ConsistentHash: 6% of lookups changed after adding a target to the existing 10
ConsistentHash: 9% of lookups changed after removing 1 of 10 targets
------------------------------ php 测试
<?php
$mem = new Memcache;
$mem->connect("192.168.1.252", 12000);
for($i=0;$i<1000000;$i++)
{
//$mem->set('key'.$i, 'This is a memcached test!', 0, 60);
//$val = $mem->get('key');
//echo $val;
$mem->delete('key'.$i);
}
?>
---------------------------------使用memcache情况,计数器、数据压缩
使用情况一:统计
<?php
//访问统计
$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方法代替上面的做法
<?php
$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));
?>
使用压缩:
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$test=(str_repeat('jetwong',100000));
$memcache->set('b',($test),MEMCACHE_COMdivSSED);
?>
使用情况说明:
前台比较
目前内存
bytes
总共读取
bytes_read
总共写入
bytes_written
压缩前
700085
700081
416
压缩后
1131
1125
13
可能看到压缩后明显占用内存少了不少
---------------------------Memcache内存的更新清理(delete flush)
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
/*设置值*/
$status = $memcache->getStats();
echo '设置前内存使用情况'.$status['bytes'].'<br>';
echo '设置后';
for($i=0;$i<9;$i++) {
$memcache->set('b'.$i,rand(1,99));
echo '<br>'.$i.'->'.$memcache->get('b'.$i);
}
/*查看设置的值*/
$status = $memcache->getStats();
echo 'delete前内存使用情况'.$status['bytes'].'<br>';
echo '<br>开始delete';
for($i=0;$i<9;$i++) {
$memcache->delete('b'.$i);
echo '<br>'.$i.'->'.$memcache->get('b'.$i);
}
/*查看flush使用的情况*/
$status = $memcache->getStats();
echo '使用flush前内存使用情况'.$status['bytes'].'<br>';
echo '使用flush情况:';
for($i=0;$i<9;$i++) {
$memcache->set('b'.$i,rand(1,99));
echo '<br>'.$i.'->'.$memcache->get('b'.$i);
}
$memcache->flush();
echo 'flush之后:';
for($i=0;$i<9;$i++) {
echo '<br>'.$i.'->'.$memcache->get('b'.$i);
}
$status = $memcache->getStats();
echo 'flush后内存使用情况'.$status['bytes'].'<br>';
?>
-----------------------内存超量的测试(set)
我们把内存设为2M
./memcached -d -m 2 -p 11211 -u root
<?php
$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.'->设置成功<br>';
$status = $memcache->getStats();
echo '内存:'.$status['bytes'].'<br>';
}
else {
echo $j.'->设置失败<br>';
}
}
?>
执行结果:
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_COMdivSSED) //开始设置
log(); //不成功,记录失败信息
}
?>
---------------------------memcached_check.sh 监控端口自动拉起
#!/bin/sh
#check memcache process and restart if down
#create by zhengdongliang
#path /data/sh/memcached/memcached_check.sh
#crontab time */10 * * * *
mm_bin="/usr/local/bin/memcached"
mm_log="/data/sh/memcached/memcached_check.log"
mm_ports=("13001" "13002" "13003" "13004")
mm_param=("-d -m 512 -p 13001 -u root" "-d -m 512 -p 13002 -u root" "-d -m 512 -p 13003 -u root" "-d -m 512 -p 13004 -u root")
mm_count=${#mm_ports[@]}
t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`
if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi
let i++
done
===============================================================
添加为自动执行:
#crontab -e
*/10 * * * * /bin/sh /data/sh/memcached/memcached_check.sh >/dev/null 2>&1
系统每10分钟会自动执行memcached_check.sh
------------------------------------------适用于
用户信息seesion【hash(用户ID)】
分类及产品,最热贴,最新贴select sql语句【hash(sql),并实时更新】
------------------------------------------理解
MEMCACHE一个不足就是一重启服务器,数据将会丢失!
为什么会有Memcache和memcached两种名称?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了把~~~~。一个是项目名称,一个是主程序文件名
,在网上看到了很多人不明白,于是混用了
.Web Server(Lighttpd、Nginx据说都比Apache效率高好多,大家可以试用下)对CPU要求高,对内存要求低;而Memcached Server是对CPU要
求低,对内存要求高,所以可以搭配使用。在对前端的Web Server上安装Memcached Server是可行的。
我考虑的一种简单方法:
后端的数据库操作模块,把所有的Select操作提取出来(update/delete/insert不管),然后把对应的SQL进行相应的hash算法计算得出一个
hash数据key(比如MD5或者SHA),然后把这个key去Memcache中查找数据,如果这个数据不存在,说明还没写入到缓存中,那么从数据库把数
据提取出来,一个是数组类格式,然后把数据在set到Memcache中,key就是这个SQL的hash值,然后相应的设置一个失效时间,比如一个小时,
那么一个小时中的数据都是从缓存中提取的,有效减少数据库的压力。缺点是数据不实时,当数据做了修改以后,无法实时到前端显示,并且
还有可能对内存占用比较大,毕竟每次select出来的数据数量可能比较巨大,这个是需要考虑的因素。
内网访问
最好把两台服务器之间的访问是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块
指向内网,那么就让Web服务器通过内网的网卡来访问Memcache服务器,我们Memcache的服务器上启动的时候就监听内网的IP地址和端口,内网
间的访问能够有效阻止其他非法的访问。
------------------------------------------ php 中memcache方法
直接 在php中 可以直接new memcache();
Memcache::connect -- 打开一个到Memcache的连接\
Memcache::pconnect -- 打开一个到Memcache的长连接
Memcache::close -- 关闭一个Memcache的连接
Memcache::set -- 保存数据到Memcache服务器上
Memcache::get -- 提取一个保存在Memcache服务器上的数据
Memcache::replace -- 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set) Memcache::delete -- 从Memcache服务器上
删除一个保存的项目
Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats -- 获取当前Memcache服务器运行的状态
------------------------------------------简单实例
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a memcached test!', 0, 60);
$val = $mem->get('key');
echo $val;
<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->addServer('failed_host', 11211);
$stats = $memcache_obj->getExtendedStats();
print_r($stats);
?>
$memcached = array( //用memcached 的 多 进程模拟 多台memcached 服务器 cn en 为 内存服务器名
'cn'=>array('192.168.254.144',11211),
'en'=>array('192.168.254.144',11212)
);
$sq = new Mysql;
$sql = "insert into mybb(pid) values(200)";
$mdsql = md5($sql);
if(!$result=$mem->get('cn_'.$mdsql)){
$sq->mquery("insert into mybb(pid) values(200)"); //插入到主mysql
$result = $sq->fetArray("select * from mybb"); //查询 是 从mysql
foreach($result as $var){
echo $var['pid'];
}
$mem->set('cn_'.$mdsql,$result); //添加到 名为 cn 的 memcached 服务器
}else{
foreach($result as $var){
echo $var['pid'];
}
}
------------------------------------------详细说明 http://www.ccvita.com/259.html
PHP的Memcache
< ?php
//连接
$mem = new Memcache;
$mem->connect("192.168.0.200", 12000);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>
如果正常的话,浏览器将输出:
Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:
程序代码分析
初始化一个Memcache的对象:
$mem = new Memcache;
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
$mem->connect("192.168.0.200", 12000);
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第
三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果
过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时
间:
$mem->set(‘key1‘, ‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出
:
$val = $mem->get(’key1′);
echo "Get key1 value: " . $val;
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最
后输出了:
$mem->replace(‘key1′, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val;
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2′, $arr, 0, 60);
$val2 = $mem->get(‘key2′);
print_r($val2);
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
$mem->delete(‘key1′);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val . "<br>";
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
$mem->flush();
$val2 = $mem->get(‘key2′);
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
------------------------------------------推荐网址
http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps3/
http://tech.idv2.com/2008/07/10/memcached-001/ 推荐mixi株式会社
http://bbs.phpchina.com/viewthread.php?tid=120151&highlight=memcache
http://bbs.phpchina.com/viewthread.php?tid=122462&highlight=memcache 基于Memcache的 Session数据的多服务器共享
http://bbs.phpchina.com/viewthread.php?tid=114865&highlight= 用memcache,文件操作代替数据库进行及时统计
- memcached全面剖析和深度剖析.rar (884.7 KB)
- 描述: memcached全面剖析和深度剖析
- 下载次数: 37
发表评论
-
通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
2015-03-12 17:10 7423参考资料:http://patrick-tang.blog ... -
Redis学习手册(主从复制)
2015-03-12 17:05 7353一、Redis的Replication: ... -
redis 的两种持久化方式及原理
2015-03-12 16:52 63335Redis是一种高级key-value数据库。它跟memc ... -
Redis指令手册中文版
2014-08-08 17:09 960连接控制QUIT :退出,关 ... -
Redis服务的监控
2013-01-17 16:00 6727redis 监控工具安装配置http://blog.sin ... -
【汇总】redis
2012-04-16 13:51 1456http://bbs.chinaunix.net/thread ... -
memcache运用代码
2011-07-22 11:38 1422interface ICache { pub ... -
memcache 丢数据解决方案
2011-07-01 11:17 2706一小时以内数据变化都存放到memcached中,无论数据读取或 ... -
Memcached repcached同步
2011-06-10 14:10 2206#安装 wget http://downloads.sour ... -
memcached命中率问题
2011-06-09 21:14 2008http://www.iteye.com/topic/2256 ... -
php遍历memcache所有键值
2011-05-31 17:56 4381很有用的东东,PHP遍历MEMCACHE的所有键,在做管理me ... -
memcached全面剖析和深度剖析
2011-05-15 14:43 1689Memcached深度分析(原创) 2009年2月11日 ... -
【监控】netstat+telnet+m-top+phpmemcached
2011-03-31 22:01 30431G=1024*1024*1024=1073741824 by ... -
centos 下安装memcache配置
2010-09-21 15:01 7456为什么会有Memcache和memca ... -
关于session和memcache的若干问题
2010-09-20 15:17 5599=============================== ... -
Memcached深度分析----转新浪开发者博客
2009-07-11 22:36 1669http://blog.developers.api.sina ... -
多台memcache 研究
2009-07-11 13:07 4868第一种方法是通过设置特殊key前缀实现分布,基本可以实现mem ... -
Memcache分组和同步机制的实现--这不是memcache集群了么
2009-07-05 21:53 13078首先我们明确了解就是Memcache是一个简单、快速、高效的分 ... -
memcached全面剖析–5. memcached的应用和兼容程序
2009-07-05 21:31 1612memcached的连载终于要结束了。到上次为止,我们介绍了与 ... -
[推荐]memcached全面剖析–4. memcached的分布式算法:Consistent Hashing
2009-07-05 21:20 2528第2次 、 第3次 由前坂介绍了memcached的内部情况 ...
相关推荐
在windows下PHP5.2版本的memcache扩展dll文件好找,5.3的可能不是很好找,这里提供PHP5.2、5.3、5.4、5.5的php_memcache.dll扩展,需要的可以下载。 如果还不好使 那我也没话说了
"Memcache各种版本下载.txt"这个文件名可能包含了一个文本文件,该文件汇总了不同版本的Memcache下载链接,可能包括官方发布页的链接,GitHub仓库的链接,或者第三方镜像站点的链接。这些链接可以帮助开发者快速找到...
2. **分桶计数**:在高并发场景下,为了避免单个计数器的性能瓶颈,可以使用多个计数器(分桶),每个桶负责一部分流量,定期进行汇总。 3. **持久化**:虽然Memcached数据存储在内存中,但可以通过定期将计数器数据...
学习更多关于Zend Framework的知识,你可以参考相关的框架入门教程、PHP开发框架总结以及数据库操作技巧汇总,这将有助于提升你的PHP开发技能。希望本文的介绍能帮助你更好地理解和使用Zend Framework与Memcache。
ormit's very special and different from others,who use who love it.Support:Txt、Xml、Access、Sqlite、Mssql、Mysql、Oracle、Sybase、Postgres、Redis、MemCache。Demo(入门): 开篇介绍: 更多文章:QQ群:...
1.常见问题汇总 2.BIO,NIO,AIO,Netty 3.Dubbo 4.ElasticSearch 5.Git 6.java并发 7.java基础 8.java集合 9.虚拟机 10.异常 11.Kafka 12.Kinux 13.Memcache 14.MyBatis 15.MySQL 16.Nginx 17.RabbitMQ 18.Redis 19...
缓存技术的实现和应用,如Memcache、Redis等;安全性分析,涵盖防火墙技术、入侵检测、安全防范体系等内容;以及可靠性设计,介绍了系统可靠性、可用性的定义及计算方法等。 适合人群:备考2024年系统架构设计师考试...
本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考。具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的...
【IPOS系统日常问题汇总】 IPOS(Interactive Point Of Sale)系统是一款用于零售业的销售终端软件,它集成了库存管理、销售分析、数据同步等多种功能。以下是一些常见的IPOS系统日常使用中遇到的问题及解决方案: ...
《IPOS系统日常问题汇总》 IPOS系统作为零售业常用的一款销售管理工具,其日常运行中可能会遇到各种问题,这些问题通常涉及到数据导出、数据分析、数据同步等多个方面。以下是一些常见问题及其解决办法: 1. **...
Memcache 面试题 23道 MyBatis面试题 37道(含答案) MySQL高频面试题 40道(含答案) Netty面试题 20道 Nginx面试题 23道 RabbitMQ面试题 22道 Redis面试题(含答案) Spring面试题(含答案) SpringCloud面试题 49...
鲁弗斯 该分支的维护速度较慢,可以在此存储库的其他分支中找到更好的分支(COMMANDO版本) Rufus是一款旨在取代MEE6的dicord机器人。 目的是使bot开源,以便更多的...MEMCACHEDCLOUD_USERNAME = //MEMCACHE USERNAME
《PD-网站后台PRDv5.docx》知识点汇总 一、修订历史记录 本文档的修订历史记录包括修订时间、修订版本、作者、说明等信息,用于跟踪文档的变更历史。 二、产品需求列表 本文档列出了 26 项产品需求,涵盖了网站...
10. **Memcache应用**:Memcache主要用于静态页面缓存,以提高网站性能。 11. **移动IP路由**:移动IPv4中,MN与CN通信需通过HA转发,但在IPv6中可以实现路由优化,MN和CN可以直接通信。 12. **性能管理与资源管理...
10. **Memcache应用**:Memcache主要用于动态页面缓存(B),提高网站性能。 11. **移动IP路由**:在移动IPv4中,MN与CN通信必须通过HA转发(B),但在IPv6中,可以使用路由优化直接通信。 12. **性能和资源管理**...
9. **Memcache**:支持容量弹性伸缩,无中断服务,分布式集群设计,硬件故障自动恢复,兼容Memcached协议。 10. **Redis**:兼容开源Redis协议,提供多数据类型、持久化存储、消息机制和事务处理,结合云服务,形成...
此外,ThinkPHP还支持扩展其他的Session存储机制,如内存、Memcache等,这需要通过`session_set_save_handler()`函数自定义处理器,参照Think.Util.Filter下的`FilterSessionDb.class.php`文件实现。 在实际应用中...