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.1REDIS_PORT=6379REDIS_PASSWORD=null果然 redis不对 修改后正常运行 laravel 不过 打开又有新的问题,不过不在本篇讲了 新问题 🧨 NOAUTH Authentication required. 下篇讲,本文主要讲述redis 3. 检查 Redis 服务器配置查看 Redis 配置文件 /etc/redis/redis.conf 中的以下设置: bind 127.0.0.1protected-mode yes如果 Redis 在另一台服务器上,确保 bind 设置允许来自应用服务器的连接。 4. 检查防火墙设置确保防火墙允许 Redis 端口(默认 6379): sudo ufw allow 63795. 检查 PHP Redis 扩展确保已安装 PHP Redis 扩展: php -m | grep redis如果没有,安装它: sudo apt-get install php-redis # Ubuntu/Debiansudo 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=fileSESSION_DRIVER=fileQUEUE_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. 地理位置应用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访问过于频繁)
- 合理设置连接池大小
安全:
Redis因其高性能、丰富的数据结构和多种持久化选项,已成为现代应用架构中不可或缺的组件,合理配置和使用Redis可以极大提升系统性能和用户体验。
|