【发布时间】:2020-06-29 05:03:48
【问题描述】:
我的服务器中有一个 Lumen API,它运行良好。实际上,此 API 将每秒从另一台服务器调用一次,并更新库存价格并存储到 redis 中。在此 api 中,我将比较接收到的数据(请求正文)和从 redis 存储的数据,并更新当前值和以前值的差异率作为响应,并且我将在 redis 中发送当前日期时间以显示股票汇率的最后汇率更新时间. 我的 lumen api 中有以下代码,
use Illuminate\Support\Facades\Redis;
public function updatebaserate(Request $request)
{
$request_data = array();
parse_str($request, $request_data);
if (app('redis')->get("BaseRates")) {
if(json_decode(app('redis')->get("BaseRates"),true) === json_decode($request->getContent(), true)){
$this->createrates();
return app('redis')->get("BaseRatesUpdated");
}else{
$receivedrates = json_decode($request->getContent(), true);
$rate_valid = true;
if($rate_valid){
app('redis')->set("BaseRatesUpdated", Carbon::createFromFormat('d-m-Y H:i:s', date('d-m-Y H:i:s')));
app('redis')->set("BaseRates", $request->getContent());
}
}
} else {
app('redis')->set("BaseRates", $request->getContent());
app('redis')->set("BaseRatesUpdated", Carbon::createFromFormat('d-m-Y H:i:s', date('d-m-Y H:i:s')));
}
$this->createrates();
return app('redis')->get("BaseRatesUpdated");
}
这个 get 和 set 的 redis 操作连续工作,每秒 2 个 api 请求将从另一台服务器调用。是否会引起任何问题。 在我的流明 .env 设置中为
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
在显示以下详细信息的服务器 redis 信息中,
# Server
redis_version:3.2.10
tcp_port:6379
# Clients
connected_clients:13
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:1802320
used_memory_human:1.72M
used_memory_rss:2387968
used_memory_rss_human:2.28M
used_memory_peak:2200392
used_memory_peak_human:2.10M
total_system_memory:4026261504
total_system_memory_human:3.75G
used_memory_lua:39936
used_memory_lua_human:39.00K
maxmemory:0
# Stats
total_connections_received:302107
total_commands_processed:30017647
instantaneous_ops_per_sec:302
total_net_input_bytes:6532076041
total_net_output_bytes:67794026721
instantaneous_input_kbps:59.68
instantaneous_output_kbps:642.24
rejected_connections:0
每秒在redis中连续读写键有什么问题吗?而且我还设置了redis超时值
127.0.0.1:6379> config get timeout
1) "timeout"
2) "100"
有没有办法在 lumen api for redis 中打开和关闭连接。我经常在错误日志中收到错误,例如
[2020-03-17 17:17:29] production.ERROR: Predis\Connection\ConnectionException: Connection timed out [tcp://127.0.0.1:6379] in /home/public_html/winapi/vendor/predis/predis/src/Connection/AbstractConnection.php:155
Stack trace:
#0 /home/public_html/winapi/vendor/predis/predis/src/Connection/StreamConnection.php(128): Predis\Connection\AbstractConnection->onConnectionError('Connection time...', 110)
#1 /home/public_html/winapi/vendor/predis/predis/src/Connection/StreamConnection.php(178): Predis\Connection\StreamConnection->createStreamSocket(Object(Predis\Connection\Parameters), 'tcp://127.0.0.1...', 4)
#2 /home/public_html/winapi/vendor/predis/predis/src/Connection/StreamConnection.php(100): Predis\Connection\StreamConnection->tcpStreamInitializer(Object(Predis\Connection\Parameters))
请帮助任何人解决问题。
【问题讨论】:
标签: php laravel laravel-5 redis lumen