/**
* @param $hostUid
* @param $key
* @return null|UserText
*/
public function getTextsByUser($hostUid, $cached = true)
{
if ($cached) {
$pattern = $this->buildKey($hostUid, '*', '*');
$prefix = $this->redis->getOptions()->prefix;
$redisKeys = array_map(function ($redisKey) use($prefix) {
if (substr($redisKey, 0, strlen($prefix)) == $prefix) {
$redisKey = substr($redisKey, strlen($prefix));
}
return $redisKey;
}, $this->redis->keys($pattern));
if (count($redisKeys) > 0) {
$result = array_combine($redisKeys, $this->redis->mget($redisKeys));
foreach ($result as $redisKey => $text) {
list(, , $userId, , $key, $lang) = explode(':', $redisKey);
$this->texts[$userId][$key][$lang] = $text;
}
}
}
if (!$cached || !isset($this->texts[$hostUid]) || !$this->texts[$hostUid]) {
$this->texts[$hostUid] = $this->getTextsByHostFromMysql($hostUid);
$mset = [];
foreach ($this->texts[$hostUid] as $key => $langs) {
foreach ($langs as $lang => $text) {
$mset[$this->buildKey($hostUid, $key, $lang)] = $text;
}
}
if ($mset) {
$this->redis->mset($mset);
}
}
return $this->texts[$hostUid];
}