yii2 memcache 跨平台交互 数值无法统一

1 首先在配置文件中加载

web\basic\config\web.php
........
    ‘components‘ => [
        ‘request‘ => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            ‘cookieValidationKey‘ => ‘zhaoyang‘,
        ],
        ‘mecache‘ => [
            ‘class‘ => ‘yii\caching\MemCache‘,
            ‘useMemcached‘ =>0,
            ‘servers‘ => [
                [
                    ‘host‘ => ‘localhost‘,
                    ‘port‘ => 11211,
                ]
            ],
        ],
        ‘user‘ => [
            ‘identityClass‘ => ‘app\models\User‘,
            ‘enableAutoLogin‘ => true,
        ],
............

2 调用memcache

 $mecache = Yii::$app->mecache; 
   $mecache->set("key","value", 60);
   $mecache->get("key");

一般这么用是可以的,一点问题都没有

但是我与java 那边的memcache交出了问题

java 写的memcache,我拿不到

php 写的memcache, java拿不到

3 解决方法

web\basic\vendor\yiisoft\yii2\caching\Cache.php
//重写2个方法, 读写都调用这个方法

public function myset($key, $value, $duration = 0, $dependency = null)
{
    return $this->setValue($key, $value, $duration);
}

public function myget($key)
{
    return $this->getValue($key);
}

下面解释为什么这么做, 简单来讲, 程序做了加密, 去掉加密的那一层, php java 都读写统一就行了

4 分析

  ① $mecache = Yii::$app->mecache;

  ② \basic\vendor\yiisoft\yii2\caching\MemCache.php

  ③ class MemCache extends Cache  即成自cache    \basic\vendor\yiisoft\yii2\caching\Cache.php

  ④ 查看原来yii2 的set 和 get 都做了加密处理

    public function get($key)
    {
        $key = $this->buildKey($key);
        $value = $this->getValue($key);
        if ($value === false || $this->serializer === false) {
            return $value;
        } elseif ($this->serializer === null) {
            $value = unserialize($value);
        } else {
            $value = call_user_func($this->serializer[1], $value);
        }
        if (is_array($value) && !($value[1] instanceof Dependency && $value[1]->getHasChanged($this))) {
            return $value[0];
        } else {
            return false;
        }
    }

    public function set($key, $value, $duration = 0, $dependency = null)
    {
        if ($dependency !== null && $this->serializer !== false) {
            $dependency->evaluateDependency($this);
        }
        if ($this->serializer === null) {
            $value = serialize([$value, $dependency]);
        } elseif ($this->serializer !== false) {
            $value = call_user_func($this->serializer[0], [$value, $dependency]);
        }
        $key = $this->buildKey($key);

        return $this->setValue($key, $value, $duration);
    }

  ⑤ 按照上面的方法添加两个没有加密的直接读写 的memcache  问题就解决了

时间: 2024-10-03 04:11:14

yii2 memcache 跨平台交互 数值无法统一的相关文章

TYPESDK手游聚合SDK客户端设计思路与架构之二:安卓平台统一化接口结构及思路

在上一篇<TypeSDK聚合sdk设计基本原则>中我们提到了,设计聚合sdk需要设计开发平台部分的接口,以及设计发布平台的聚合这2个大模块.那么我们今天就先来讲讲发布平台之一:安卓平台的统一化接口结构和思路. 一.相关的需求 安卓平台的统一化接口,我们需要考虑到具体以下的几点: 1.对外需要有统一的接口,保证不同的渠道sdk 对同一个游戏来说,是调用相同的接口,传递相同的参数 2.对内需要有一套扩展性很好的框架,可以应对不同渠道的sdk差异性 二.设计的模块 那么针对这些考虑点,安卓平台的统一

我的开源框架之交互控制、组件通用工具封装

需求: (1)后期的jquery组件具有一些通用的需求,如ajax请求,数组的处理等 (2)从系统UI与服务器集成的角度看,一个系统的前端交互需要做一个统一的封装来接受用户交互,同时统一于服务器的请求 (3)前端的日志功能需要统一 (4)统一的验证入口 (5)综上:我们需要一个封装了通用表单操作(表单转对象,对象填充到表单,打开一个窗口),封装系统前端的统一ajax交互,ajax交互返回格式统一以便做统一处理. 初步代码实现(后期将会根据实际需求调整) 1 /******************

让R与Python共舞

转载:http://ices01.sinaapp.com/?p=129      R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现 工具.通俗点说,R是用来做统计和画图的.R拥有自己的脚本语言和大量的统计.图形库(得益于开源社区),这让她看起来既美又实用.与其他同类软件(如 SPSS)相比,R的特点是纯命令行的,这倒也好,我们更应该把注意力放在数据本身,而非统计工具的UI.   R虽说有一套自己的语言,还挺完备,但她最专业的还是做统计和画图,而像连接数据库.文本处理.文件操作等这些脏

亿级用户的新浪微博平台架构

微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache. 随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化.服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展. 在此基础上又经过长时间的重构.线上运行.思索与沉淀,平台形成了第三代架构体系. 我们先看一张微博的核心业务图(如下),是不是非常复杂?但这已经是一个简化的不能再简化的业务图了,第三代技术体系就是为了保障在微博核心业务上快速

亿级用户下的新浪微博平台架构

序言 新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA).高并发访问.低延时的强大后台系统支撑. 微博平台第一代架构为LAMP架构,数据库使用的MyIsam,后台用的php,缓存为Memcache. 随着应用规模的增长,衍生出的第二代架构对业务功能模块化.服务化.组件化,后台系统从php替换为Java,逐渐形成面向服务的SOA架构,在很长一段时间支撑微博平台业务发展. 在此基础上又

Python2.7字符编码详解

一. 字符编码基础 为明确概念,将字符集的编码模型分为以下4个层次: 抽象字符清单(Abstract Character Repertoire, ACR):待编码文字和符号的无序集合,包括各国文字.标点.图形符号.数字等. 已编码字符集(Coded Character Set, CCS):从抽象字符清单到非负整数码点(code point)集合的映射. 字符编码格式(Character Encoding Form, CEF):从码点集合到指定宽度(如32比特整数)编码单元(code unit)的

Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转

原文地址:http://mp.weixin.qq.com/s/eXvoJew3bjFKzLLJpS0Otg 随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台.就像前边的文章说的,微服务架构为业务开发带来了诸多好处的同时,例如单一职责.独立开发部署.功能复用和系统容错等等,也带来一些问题. 例如上手难度变大,运维变得更复杂,模块之间的依赖关系更复杂,数据一致性难以保证,等等.但是办法总是比问题多,本篇文章就来介绍一下我们是如何保障微服务架构的数据一致性的. 微服务架构的数据一

MySQL系列教程(五)

MyCAT MyCat是基于阿里开源的Cobar产品而研发,Cobar的稳定性.可靠性.优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远.业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品. MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师.架构师.DBA等,优秀的技术团队保证了MYCAT的产品质量.MYCAT并不依托于任

Memcached Client的释疑

1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些,目前只有Linux版本 .memcache:http://cn2.php.net/manual/en/book.memcache.php memcached:http://cn2.php.net/manual/en/book.memcached