踩坑記錄,yii 框架不是很熟悉吐句,今天需要根據(jù)業(yè)務(wù)做個一個 redis hmset 的操作胁后,沒想到一波三折。
主題是: yii redis 存儲 hash
不管是 laravel嗦枢、yaf 基本上都是 hmSet(key, array); 沒想到 yii 的 hmset 方法有些獨特攀芯。
# 剛開始我查詢的時候沒注意,
# 以為是博主寫的demo文虏,但是 yii 的操作確實是這樣侣诺,不能直接寫數(shù)組。這是個坑氧秘。
hmset(key, 'name', 'tom', 'age', 18);
如果我們拿到的數(shù)據(jù)是個數(shù)組年鸳,應(yīng)該怎么處理呢? 可以用 PHP 的 ...
去操作一下丸相。
# 假裝是源數(shù)據(jù)搔确,需要 hmset
$arr = ['name'=>'tom', 'age'=>18, 'city'=>'suzhou'];
$requireData = [];
foreach($arr as $key => $val) {
# 根據(jù)需求去二次處理數(shù)據(jù)等等
$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
等類似的命令都會報錯的印颤。
參考博文(可以看到的時候已經(jīng)折騰半天了您机。。年局。):
這個方法沒有測試际看,未知。
Yii::$app->redis->executeCommand('HMSET', ['user:1', 'name', 'joe', 'solary', 2000])