memcache分布式小实例

<?php

/**
 * 分布式的 memcache set 实现
 */

/**
 * 创建缓存实现memcache 添加分布式服务器  并设置权限
 */

function createCache() {
    $arr = array(
        array("host" => "127.0.0.1", "port" => 11211, "weight" => 20), //127.0.0.1:11211的权重是20%
        array("host" => "127.0.0.1", "port" => 11212, "weight" => 80), //127.0.0.1:11212的权重是80%
    );
    $cache = new memcache();
    foreach ($arr as $ele) {
        //使用长连接,并且设置不同memcache服务器的权重,将memcache服务器添加到连接池
        $cache->addServer($ele["host"], $ele["port"], true, $ele["weight"]);
    }
    return $cache;
}

header("content-type:text/html;charset=utf-8");
$cache = createCache();
for ($i = 0; $i < 10; $i++) {
    //由于使用了分布式,所以这里不需要使用connect或者pconnect打开链接,    //set方法会调用memcache的分布式缓存分配算法,按照权重将缓存项缓存到连接池的某个服务器
    if ($cache->set($i, $i, 0, 3600)) {
        echo "缓存成功,key:$i,value:$i";
    } else {
        echo "缓存失败";
    }
    echo "<br/>";
}
?>
<?php

/**
 * 分布式的 memcache get 实现
 */

function createCache() {
    $arr = array(
        array("host" => "127.0.0.1", "port" => 11211, "weight" => 20),
        array("host" => "127.0.0.1", "port" => 11212, "weight" => 80)
    );
    $cache = new memcache();
    foreach ($arr as $ele) {
        $cache->addServer($ele ["host"], $ele ["port"], true, $ele ["weight"], 1);
    }
    return $cache;
}

header(‘content-type:text/html;charset=utf-8‘);
$cache = createCache();
$val;
for ($i = 0; $i < 10; $i ++) {
    $val = $cache->get($i);
    if (false === $val) {
        echo "缓存获取失败";
    } else {
        echo "缓存获取成功:,key:$val,value:$val";
    }
    echo "<br/>";
}
$cache->close();
?>
时间: 2024-08-08 13:53:16

memcache分布式小实例的相关文章

memcache分布式 [一致性hash算法] 的php实现

最近在看一些分布式方面的文章,所以就用php实现一致性hash来练练手,以前一般用的是最原始的hash取模做分布式,当生产过程中添加或删除一台memcache都会造成数据的全部失效,一致性hash就是为了解决这个问题,把失效数据降到最低,相关资料可以google一下! php实现效率有一定的缺失,如果要高效率,还是写扩展比较好经测试,5个memcache,每个memcache生成100个虚拟节点,set加get1000次,与单个memcache直接set加get慢5倍,所以效率一般,有待优化!实

40条优化php代码的小实例

1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; 4.销毁变量去释放内存,特别是大的数组; 5.避免使用像__get, __set, __autoload等魔术方法; 6.requiere_once()比较耗资源; 7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少; 8.如果你需要得sexinsex到脚本执行时的

【转载】memcache分布式 [一致性hash算法] 的php实现

最近在看一些分布式方面的文章,所以就用php实现一致性hash来练练手,以前一般用的是最原始的hash取模做分布式,当生产过程中添加或删除一台memcache都会造成数据的全部失效,一致性hash就是为了解决这个问题,把失效数据降到最低,相关资料可以google一下! php实现效率有一定的缺失,如果要高效率,还是写扩展比较好经测试,5个memcache,每个memcache生成100个虚拟节点,set加get1000次,与单个memcache直接set加get慢5倍,所以效率一般,有待优化!实

spring+mybatis之声明式事务管理初识(小实例)

前几篇的文章都只是初步学习spring和mybatis框架,所写的实例也都非常简单,所进行的数据访问控制也都很简单,没有加入事务管理.这篇文章将初步接触事务管理. 1.事务管理 理解事务管理之前,先通过一个例子讲一下什么是事务管理:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元:如果银行卡扣钱失败但是ATM却出

Socket通信入门小实例

客户端: public class Client { private int port = 8000; private String host = "localhost"; private Socket socket; public Client() throws UnknownHostException, IOException { socket = new Socket(host, port); } public void readFromUser() throws IOExcep

HTML小实例:通过PHP调用C++

一.在本地服务器目录下新建一个 test 文件夹,在此文件夹中新建文件: 1. cpp.html <!DOCTYPE html> <html> <head> <title>C++测试</title> </head> <body> <form method="post" action="cpp.php"> <div> <p>请测试文字,以空格分隔:&

javascript实现(分享到xxx)的小实例

javascript实现(分享到的小实例) 这个算值运动的一个实例应用吧 HTML代码: <div id="tag"> <span id="showInfo">分享到</span> </div> css代码: #tag{ height:200px; width:200px; background:green; position:absolute; top:100px; left:-200px; } #tag span{

Android实战简易教程-第五十八枪(AlarmManager类用法研究小实例)

一.概念及相关方法 android中实现定时任务一般有两种实现方式,一种是使用Java API中提供的Timer类,一种是使用android的Alarm机制.Timer机制有个短板就是不太适用于那些需要长期在后台运行的任务,我们都知道为了让电池更加耐用,会在长时间不操作手机的情况下,CPU进入休眠状态,这是可能导致Timer中的定时任务无法正确运行.所以我们重点来研究一下Alarm机制. AlarmManager,顾名思义,就是"提醒",是Android中常用的一种系统级别的提示服务,

使用QTP录制自带Flight小实例

1.双击打开QTP10.0,启动过程中测试类型选择“WEB”. 2.进入主界面,New——Test,新建一个测试用例. 3.点击Record按钮,Record and settings对话框中,可以选择WEB测试和Windows Application两种不同的测试对象类型,这里选择Windows Application. 4.Record and run only on: Applications opened by Quick Test选中之后,下面的列表中选择Flight APP的路径.