有个地方不明白

有个地方不明白

老师一直强调memcached 的分布式算法是基于客户端的,服务器之间互相不通信,什么叫基于客户端的?不是很明白原理,请老师说清楚些,还有设置的八个缓存,是随机分配到服务器池中的服务器里吗?是根据权重的几率来的吗?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

您好,客户端或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。基于客户端则可以理解为基于用户。嗯,是的,随机分配根据权重。

token每次登陆获取的都是不同的值,所以在刷新后获取的值不同。祝学习愉快!

  • 雨之赞歌 提问者 #1
    可我刷新页面应该也不算重新登录吧。。而且token不是值改变的时候才会变动吗?
    2019-06-04 20:11:20
  • 好帮手慕查理 回复 提问者 雨之赞歌 #2
    您好,刷新页面的时候是会重新执行页面的代码,那么此时会重新获取值的。同学测试时的代码是已经反馈的这部分内容吗?或者反馈全部的代码。
    2019-06-05 10:34:52
提问者 雨之赞歌 2019-06-05 12:01:03
<?php

//此时如果这里的多个实例都传参为相同的名字,那么它们的服务器池会共享
$cache = new Memcached();

//重置服务器地址池
//$cache->resetServerList();

if(!$cache->getServerList()){
     //添加服务器连接地址(只是添加,用到的时候才会真正的连接)
     $cache->addServers(
          array(
             ['192.168.2.128',11211,60], //权重,对应服务器池中的权重,服务器在操作时被选中的概率
             ['192.168.2.128',11311,40],
          )
     );
}

//得到当前服务器池中的服务器地址
$serverList = $cache->getServerList();

//添加多条缓存
$cache->setMulti(
    array(
        'k1' => 'v1',
        'k2' => 'v2',
        'k3' => 'v3',
        'k4' => 'v4',
        'k5' => 'v5',
    ),time()+800
);

$cache->set('mofei','10',time()+900);

$result = $cache->get('mofei',null,Memcached::GET_EXTENDED);
print_r($result);


这是我的代码,每次刷新页面 cas 都会变,但是老师的不会变,我是memcached 3.1 版本

  • 您好,建议查看https://www.php.net/manual/zh/memcached.get.php。cas值仅在当前客户端最后一次取值后,可以使用Memcached::getResultCode 查看每次最后的取值是否相同。
    2019-06-05 19:35:32
  • 提问者 雨之赞歌 回复 好帮手慕查理 #2
    明白了!每次刷新页面等于set重新写了一遍,所以cas值更新了
    2019-06-06 08:53:57
提问者 雨之赞歌 2019-06-04 16:59:32

还有为什么我每次刷新 token值都会变呢?

http://img1.sycdn.imooc.com//climg/5cf632f20001028710870166.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师