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, //这里简单说明一下 0是memcache, 1是memcached 两个是php里不同的扩展
'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  问题就解决了

yii2 memcache 跨平台交互 键和值不一样的更多相关文章

  1. PHP实现查询Memcache内存中的所有键与值

    使用Memcache时,我们可以用memcache提供的get方法,通过键查询到当前的数据,但是有时候需要查询内存中所有的键和值,这个时候可以使用下面的代码实现: <?php /** * Cre ...

  2. SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键

    http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...

  3. php中的不常用数组函数(一)(数组中元素的键和值对调 array_flip())

    array_flip($arr); //交换数组中的键和值. //如下所示,如果$arr中有相同的值.交换之后 会被旧的覆盖,最后一个有效. /***********array_flip(交换数组中的 ...

  4. C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法

    .net中要连接mysql数据库,需要引用MySql.Data.dll文件,这文件在mysql官网上有下载. 接着通过MySqlCommand执行插入语句后想要获取该数据主键id值的方法如下: lon ...

  5. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  6. Android(java)学习笔记104:Map集合的遍历之键找值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  7. Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值

    1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: ...

  8. 关于JavaScript对象的键和值

    一个JavaScript对象由键和值组成. 当一个给定键的值被设置为一个字符串.布尔值.数字.数组或对象时,我们把这个键称为属性. 当把键设置为函数时,我们把它叫做方法.

  9. veridata实验例(5)在更改主键列值,update操作将被分成两个语句

    veridata实验例(5)更改主键列值,update操作将被分成两个语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象&qu ...

随机推荐

  1. 2017-2018-1 Java小组-1623 第一周作业

    2017-2018-1 Java小组-1623 第一周作业 <构建之法>学习笔记及团队成员介绍 1. 学习内容 概论 个人技术和流程 软件工程师的成长 两人合作 团队和流程 敏捷流程 实战 ...

  2. System.Data.SQLite未能加载文件或程序集

    1.简直是作死帝呀.不需要修改dll的名字,否则就坐等悲剧吧 如果项目中有x86和x64的dll,可以建两个不同的文件夹分别存放,但是千万不要修改掉默认的dll的名字 System.Data.SQLi ...

  3. POJ 2240 Arbitrage(判正环)

    http://poj.org/problem?id=2240 题意:货币兑换,判断最否是否能获利. 思路:又是货币兑换题,Belloman-ford和floyd算法都可以的. #include< ...

  4. Vi/Vim三种模式

    命令模式,底线命令模式,输入模式:

  5. JAVA基础知识详解

    1. JVM是什么 JVM是Java Virtual Mechine的缩写.它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机. JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了 ...

  6. Ant是什么

    Ant是什么? 一.总结 一句话总结: 编译 打包 测试 工具 xml Ant是Java的生成工具,是Apache的核心项目: Ant类似于Unix中的Make工具,都是用来编译.生成: Ant是跨平 ...

  7. Gitlab项目用ssh克隆

    Gitlab项目用ssh克隆 1.  新建一个文件夹并用git bash here 打开 2.  在git bash here 输入命令行 ssh-keygen –t rsa –C“邮箱名” 3.  ...

  8. bzoj 1854 构图 并查集

    我们可以把一件装备看成一条边,两个属性看成两个点,那么这就相当于读入了一张图 当读入每一个x,y时,我们找到两个点的祖先节点,fx,fy,我们保证祖先节点在该连通块 中编号(装备属性)最大,用flag ...

  9. PHP:第五章——字符串过滤函数

    <?php header("Content-Type:text/html;charset=utf-8"); //字符串过滤函数: //1.n12br 在所有新行之前插入Htm ...

  10. 获得文件路径 _pgmptr, _makepath, _splitpath

    #include <stdlib.h> #include <stdio.h> int main(void) { char path_buffer[_MAX_PATH]; cha ...