简体   繁体   English

在 linux 服务器上使用 redis 连接超时 [tcp://127.0.0.1:6379]

[英]Connection timed out [tcp://127.0.0.1:6379] using redis on linux server

I have an Lumen API in my server, it was working fine.我的服务器中有一个 Lumen API,它运行良好。 Actually this API will be calling every seconds from another server and update stock rates and store into redis.实际上,这个 API 将每秒钟从另一台服务器调用一次并更新库存率并存储到 redis 中。 In this api I'm comparing the received data(request body) and stored data from redis and update the difference rate of current and previous values as response and also I will send current date time in redis to show last rate update time of stock rates.在这个 api 中,我正在比较接收到的数据(请求正文)和来自 redis 的存储数据,并更新当前值和先前值的差异率作为响应,并且我将在 redis 中发送当前日期时间以显示股票率的最后更新率. I have the following code in my lumen api,我的 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");
}

This get and set of redis operation working continuously for every second 2 api request will call from another server.每隔 2 个 api 请求就会从另一台服务器调用此 redis 操作的 get 和 set 连续工作。 Whether it will cause any issue.是否会引起任何问题。 In my lumen .env settings as在我的 lumen .env 设置中

BROADCAST_DRIVER=redis

CACHE_DRIVER=redis
QUEUE_DRIVER=redis

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

In server redis info showing following details,在显示以下详细信息的服务器 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

Is there any issue on continuously read and write keys in redis for every second.每秒在redis中连续读写密钥是否有任何问题。 And also I have set redis timeout value而且我还设置了redis超时值

127.0.0.1:6379> config get timeout
1) "timeout"
2) "100"

Is there any way to open and close connection in lumen api for redis.有什么办法可以在 lumen api 中打开和关闭 redis 的连接。 I have often receiving the error in error log like我经常收到错误日志中的错误,例如

[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))

Please help any one to resolve the issue.请帮助任何人解决问题。

Please try by changing the Redis timeout value in /etc/redis/redis.conf to some non-zero value.请尝试将/etc/redis/redis.conf的 Redis timeout/etc/redis/redis.conf为某个非零值。 This can resolve your problem.这可以解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM