yii Zipkin report error Failed to write to socket

踩坑记录,yii 框架不是很熟悉,今天需要根据业务做个一个 redis hmset 的操作,没想到一波三折。
主题是: yii redis 存储 hash


不管是 laravel、yaf 基本上都是 hmSet(key, array); 没想到 yii 的 hmset 方法有些独特。

# 刚开始我查询的时候没注意,
# 以为是博主写的demo,但是 yii 的操作确实是这样,不能直接写数组。这是个坑。
hmset(key, 'name', 'tom', 'age', 18);

如果我们拿到的数据是个数组,应该怎么处理呢? 可以用 PHP 的 ... 去操作一下。

# 假装是源数据,需要 hmset
$arr  = ['name'=>'tom', 'age'=>18, 'city'=>'suzhou'];
 $requireData = [];
foreach($arr as $key => $val) {
    # 根据需求去二次处理数据等等
    $requireData[] = $key;
    $requireData[] = $val;
}
# 写入缓存
# 注意这个 key 值,是不带前缀的,有的配置会加一个 key 前缀,这里最好测试下,是否加上了。没有的话需要自己另外拼接了。
# Yii::$app->cache->set(key, value) // 这个前缀就会自己加上的。
# 有的博文说这里不能用 cache,需要用 redis,但是测试出来,cache 里面配置好 redis,是可以直接用的。
Yii::$app->cache->hmset($cacheKey, ...$requireData);
  • 还有一个坑,可能用 phpstorm 会检查出来,就是这里的 hmset 必须是纯小写, hmSet 等类似的命令都会报错的。

参考博文(可以看到的时候已经折腾半天了。。。):

  • https://www.yiichina.com/question/245
这个方法没有测试,未知。
Yii::$app->redis->executeCommand('HMSET', ['user:1', 'name', 'joe', 'solary', 2000])

你可能感兴趣的:(yii Zipkin report error Failed to write to socket)