laravel使用redis集群,用户redis分配解决办法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了laravel使用redis集群,用户redis分配解决办法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1881字,纯文字阅读大概需要3分钟。
内容图文
![laravel使用redis集群,用户redis分配解决办法](/upload/InfoBanner/zyjiaocheng/912/b8585adb491a4378b8e694b570d994f4.jpg)
根据openid分配redsi,middleware中间件代码如下:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Log;
class InitRedis
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$unionid = $request->openid;
$this->initRedisConfig($unionid);
return $next($request);
}
/**
* 根据用户openid分配redis
* @param $openid
*/
public function initRedisConfig($openid)
{
//处理多redis逻辑
if (isset($openid)) {
//64进制转换成10进制
$map = array(
'0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19,
'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24, 'P' => 25, 'Q' => 26, 'R' => 27, 'S' => 28, 'T' => 29,
'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, 'Z' => 35, 'a' => 36, 'b' => 37, 'c' => 38, 'd' => 39,
'e' => 40, 'f' => 41, 'g' => 42, 'h' => 43, 'i' => 44, 'j' => 45, 'k' => 46, 'l' => 47, 'm' => 48, 'n' => 49,
'o' => 50, 'p' => 51, 'q' => 52, 'r' => 53, 's' => 54, 't' => 55, 'u' => 56, 'v' => 57, 'w' => 58, 'x' => 59,
'y' => 60, 'z' => 61, '_' => 62, '=' => 63, '-' => 64,
);
$index = 0;
$openidMd5 = md5($openid);
foreach ([-1, -2] as $sub) {
$char = substr($openidMd5, $sub);
if (empty($map[$char]))
$index += 0;
else
$index += $map[$char];
}
} else {
$index = 0;
}
$redisHA = explode(',', env('REDIS_HA_HOSTS'));
$index = (int)($index / 2 % count($redisHA));
$redisConfig = ['default' => [
'host' => $redisHA[$index],
'port' => 6379,
'database' => 0,
'password' => env('REDIS_PASSWORD'),
],];
Log::info(__METHOD__, $redisConfig);
// 设置redis连接
config(['database.redis' => $redisConfig]);
}
}
为什么一定要放在中间件?因为从项目中了解到,更改redis连接只有在用户没有使用redis相关增、删、改、查操作才可以改,所以放中间件内
内容总结
以上是互联网集市为您收集整理的laravel使用redis集群,用户redis分配解决办法全部内容,希望文章能够帮你解决laravel使用redis集群,用户redis分配解决办法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。