laravel RedisException: Connection refused优雅草PMS项目管理系统报错解决-以及Redis 详细指南-优雅草卓伊凡
laravel RedisException: Connection refused
优雅草PMS项目管理系统报错解决-以及Redis 详细指南-优雅草卓伊凡
今天来开始更新pms系统,因为我们ppt上面要做,才发现原来打不开,此前主要是事情太多,我们一直有很多东西搁置
解决 Laravel Redis 连接被拒绝的问题
您遇到的错误是 RedisException: Connection refused
,这表明 Laravel 应用程序无法连接到 Redis 服务器。以下是解决此问题的步骤:
常见原因和解决方案
1. 检查 Redis 服务是否运行
首先确认 Redis 服务器是否正在运行:
sudo systemctl status redis
如果未运行,启动它:
sudo systemctl start redis
面板打开看了redis 正常 运行
然后发现端口改为6999了, 那估计配置文件不对头。
2. 检查 Redis 配置
确保您的 Laravel 配置文件 .env
中有正确的 Redis 配置:
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=null
果然 redis不对
修改后正常运行 laravel 不过 打开又有新的问题,不过不在本篇讲了
新问题 🧨 NOAUTH Authentication required.
下篇讲,本文主要讲述redis
3. 检查 Redis 服务器配置
查看 Redis 配置文件 /etc/redis/redis.conf
中的以下设置:
bind 127.0.0.1
protected-mode yes
如果 Redis 在另一台服务器上,确保 bind
设置允许来自应用服务器的连接。
4. 检查防火墙设置
确保防火墙允许 Redis 端口(默认 6379):
sudo ufw allow 6379
5. 检查 PHP Redis 扩展
确保已安装 PHP Redis 扩展:
php -m | grep redis
如果没有,安装它:
sudo apt-get install php-redis # Ubuntu/Debian
sudo systemctl restart php-fpm # 或您使用的 PHP 服务
6. 测试 Redis 连接
尝试手动连接 Redis:
redis-cli ping
应该返回 PONG
。
7. 检查 Laravel Redis 配置
查看 config/database.php
中的 Redis 配置:
'redis' => ['client' => env('REDIS_CLIENT', 'phpredis'),'default' => ['host' => env('REDIS_HOST', '127.0.0.1'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => env('REDIS_DB', 0),],
],
8. 检查持久连接设置
如果使用持久连接,确保配置正确:
'options' => ['persistent' => true,'persistent_id' => 'your_id_here',
],
临时解决方案
如果您需要快速恢复服务,可以暂时禁用 Redis 缓存,在 .env
中设置:
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync
深入排查
如果以上方法都不奏效,可以:
- 在
PhpRedisConnector.php
文件中的连接代码前添加日志,打印连接参数 - 检查 Redis 服务器日志
/var/log/redis/redis-server.log
- 使用
telnet
测试端口连通性:telnet your_redis_host 6379
Redis 详细配置与应用场景指南
Redis 详细运行配置
Redis 的配置文件通常位于 /etc/redis/redis.conf
,以下是主要配置参数及其说明:
1. 基本配置
- daemonize
yes|no
:是否以守护进程方式运行 - pidfile
/var/run/redis.pid
:PID 文件位置 - port
6379
:监听端口 - bind
127.0.0.1
:绑定的IP地址 - timeout
300
:客户端空闲超时时间(秒) - tcp-keepalive
300
:TCP保持连接时间(秒)
2. 安全配置
- requirepass
foobared
:设置认证密码 - rename-command
CONFIG ""
:重命名或禁用危险命令 - protected-mode
yes
:保护模式(无bind和密码时只接受本地连接)
3. 资源限制
- maxclients
10000
:最大客户端连接数 - maxmemory
2gb
:最大内存限制 - maxmemory-policy
volatile-lru
:内存满时的淘汰策略
volatile-lru
:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰allkeys-lru
:从所有数据集中挑选最近最少使用的数据淘汰volatile-random
:从已设置过期时间的数据集中随机淘汰allkeys-random
:从所有数据集中随机淘汰volatile-ttl
:从已设置过期时间的数据集中挑选将要过期的数据淘汰noeviction
:不淘汰,返回错误
4. 持久化配置
- save
900 1
:900秒内有1个更改则快照 - save
300 10
:300秒内有10个更改则快照 - save
60 10000
:60秒内有10000个更改则快照 - stop-writes-on-bgsave-error
yes
:快照出错时停止写入 - rdbcompression
yes
:RDB文件压缩 - dbfilename
dump.rdb
:RDB文件名 - dir
./
:持久化文件存储目录
AOF持久化配置:
- appendonly
no
:是否开启AOF - appendfilename
appendonly.aof
:AOF文件名 - appendfsync
everysec
:同步策略
always
:每次写入都同步everysec
:每秒同步一次no
:不主动同步,由操作系统决定
5. 高级配置
- hash-max-ziplist-entries
512
:哈希使用ziplist的最大元素数 - hash-max-ziplist-value
64
:哈希使用ziplist的最大值字节数 - activerehashing
yes
:是否主动rehash - client-output-buffer-limit:客户端输出缓冲区限制
- hz
10
:后台任务执行频率(1-500)
Redis 主要应用场景
1. 缓存系统
- 减轻数据库压力
- 热点数据缓存
- 页面缓存
- 对象缓存
2. 会话存储(Session Store)
- 分布式会话共享
- 高可用会话管理
3. 消息队列系统
- 使用List实现简单队列
- Pub/Sub实现发布订阅
- Stream实现更复杂的消息队列
4. 实时排行榜/计数器
- 使用ZSET实现排行榜
- INCR实现计数器
- 实时统计在线人数等
5. 分布式锁
- SETNX实现分布式锁
- RedLock算法实现更安全的分布式锁
6. 社交网络功能
- 粉丝关系
- 时间线
- 点赞/收藏
7. 地理位置应用
- GEO命令处理地理位置
- 附近的人
- 位置搜索
8. 实时系统
- 实时监控
- 实时分析
- 实时推送
Redis 数据结构及应用对应
数据结构 | 常用命令 | 典型应用场景 |
String | SET, GET, INCR | 缓存、计数器、分布式锁 |
Hash | HSET, HGET, HINCRBY | 对象存储、用户属性 |
List | LPUSH, RPOP, BLPOP | 消息队列、最新列表 |
Set | SADD, SINTER, SUNION | 标签、好友关系、唯一计数 |
ZSet | ZADD, ZRANGE, ZREVRANK | 排行榜、优先级队列 |
HyperLogLog | PFADD, PFCOUNT | 基数统计(UV统计) |
GEO | GEOADD, GEORADIUS | 地理位置、附近的人 |
Stream | XADD, XREAD, XGROUP | 消息队列、事件溯源 |
Redis 生产环境最佳实践
- 内存管理:
- 设置合理的maxmemory
- 根据业务选择合适的淘汰策略
- 监控内存使用情况
- 持久化选择:
- RDB适合备份和快速恢复
- AOF提供更好的持久性保证
- 生产环境建议RDB+AOF结合使用
- 高可用:
- 主从复制
- Redis Sentinel实现自动故障转移
- Redis Cluster实现数据分片
- 性能优化:
- 合理使用Pipeline减少网络往返
- 避免大Key(单个Key过大)
- 避免热点Key(某个Key访问过于频繁)
- 合理设置连接池大小
- 安全:
- 设置密码认证
- 禁用危险命令
- 绑定特定IP
- 启用保护模式
Redis因其高性能、丰富的数据结构和多种持久化选项,已成为现代应用架构中不可或缺的组件,合理配置和使用Redis可以极大提升系统性能和用户体验。