ไม่สามารถเชื่อมต่อกับ Redis ที่ 127.0.0.1:6379: การเชื่อมต่อถูกปฏิเสธด้วย homebrew


120

ใช้ homebrew เพื่อติดตั้ง Redis แต่เมื่อฉันพยายาม ping Redis มันแสดงข้อผิดพลาดนี้:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

หมายเหตุ: ฉันพยายามปิดไฟร์วอลล์และแก้ไขไฟล์ conf แต่ยังไม่สามารถ ping ได้ ฉันใช้ macOS Sierra และ homebrew เวอร์ชัน 1.1.11

คำตอบ:


283

หลังจากติดตั้งredisพิมพ์จากterminal:

redis-server

และ Redis-Server จะเริ่มทำงาน


1
อย่างไรก็ตามฉันจะหยุดไม่ให้ฟังพอร์ต / โฮสต์นั้นได้อย่างไร
Afolabi Olaoluwa Akinwumi

@AfolabiOlaoluwaAkinwumi โปรดอ้างอิงฉันจะหยุด redis-server ได้อย่างไร
LuFFy

3
สำหรับ Windows จาก Command Prompt cd C:\Program Files\Redisแล้ว redis-server
Pradeep Kumar Prabaharan

2
วิธีเรียกใช้เซิร์ฟเวอร์ redis อย่างต่อเนื่องในพื้นหลังฉันใช้ ubuntu @LuFFy
AATHITH RAJENDRAN

1
@AATHITHRAJENDRAN ตรวจสอบคำตอบนี้ฉันหวังว่ามันจะช่วยได้
LuFFy

37

ฉันพบคำถามนี้ในขณะที่พยายามหาสาเหตุที่ฉันไม่สามารถเชื่อมต่อกับ redis ได้หลังจากเริ่มต้นผ่าน brew services start redisหลังจากที่เริ่มต้นได้ผ่านทาง

TL; DR

ขึ้นอยู่กับความสดใหม่ของเครื่องหรือการติดตั้งคุณอาจไม่มีไฟล์ config หรือไดเร็กทอรีสำหรับค่าเริ่มต้นของ redis

  1. คุณต้องมีไฟล์ config ที่/usr/local/etc/redis.conf. หากไม่มีไฟล์นี้redis-serverจะไม่เริ่มทำงาน คุณสามารถคัดลอกไฟล์กำหนดค่าเริ่มต้นและแก้ไขจากที่นั่นด้วยไฟล์

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. คุณต้อง/usr/local/var/db/redis/มีอยู่ คุณสามารถทำได้ง่ายๆด้วย

    mkdir -p /usr/local/var/db/redis
    

ในที่สุดก็รีสตาร์ท redis ด้วย brew services restart redis .

เจอได้ยังไง!?

ฉันเสียเวลาไปมากในการพยายามหาว่า redis ไม่ได้ใช้ค่าเริ่มต้นผ่าน homebrew และพอร์ตอะไร บริการต่างๆทำให้เข้าใจผิดเพราะแม้ว่าจะredis-serverยังไม่ได้เริ่มจริง แต่brew services listก็ยังคงแสดง redis ว่า "เริ่มต้น" วิธีที่ดีที่สุดคือการใช้งานซึ่งจะแสดงให้คุณเห็นว่าล็อกไฟล์ที่brew services --verbose start redis /usr/local/var/log/redis.logมองเข้าไปในนั้นฉันพบปืนสูบบุหรี่

Fatal error, can't open config file '/usr/local/etc/redis.conf'

หรือ

Can't chdir to '/usr/local/var/db/redis/': No such file or directory

โชคดีที่บันทึกทำให้การแก้ปัญหาข้างต้นชัดเจน

ฉันวิ่งredis-serverไม่ได้เหรอ

คุณสามารถทำได้ มันก็จะใช้เวลาถึงขั้วหรือขัดขวาง terminal redis-server &ของคุณบางครั้งถ้าคุณทำงาน นอกจากนี้มันจะใส่dump.rdbไดเร็กทอรีใด ๆ ที่คุณเรียกใช้ใน ( pwd) ฉันรู้สึกรำคาญที่ต้องลบไฟล์หรือเพิกเฉยในคอมไพล์ดังนั้นฉันคิดว่าฉันจะปล่อยให้เบียร์ทำงานกับบริการ


ขอบคุณสิ่งนี้ช่วยแก้ปัญหาของฉันในโครงการ laravel ที่ฉันได้รับการเชื่อมต่อถูกปฏิเสธใน abstractconnection.php บรรทัด 155
luckyguy73

ฉันมีข้อผิดพลาดใน abstractconnection.php บรรทัด 155 ด้วย! บ้า.
Kevin Gagnon

เริ่มต้นด้วย verbose ทำสิ่งนี้ให้ฉัน ฉันมีปัญหาใน redis.conf ขอบคุณ
SangamAngre

18

หากหลังจากติดตั้งแล้วคุณจำเป็นต้องทำงานredisตลอดเวลาเพียงพิมพ์เทอร์มินัล:

redis-server &

เรียกใช้ redis โดยใช้ upstart บน Ubuntu

ฉันพยายามทำความเข้าใจวิธีการตั้งค่าระบบตั้งแต่เริ่มต้นบน Ubuntu ฉันเพิ่งติดตั้งredisลงในกล่องและนี่คือวิธีที่ฉันทำและบางสิ่งที่ต้องระวัง

ติดตั้ง:

sudo apt-get install redis-server

ซึ่งจะสร้างredisผู้ใช้และติดตั้งinit.dสคริปต์สำหรับมัน เนื่องจากupstartตอนนี้เป็นการแทนที่การใช้ init.d ฉันคิดว่าฉันควรแปลงให้ทำงานโดยใช้upstartฉันคิดว่าฉันควรแปลงให้ทำงานโดยใช้

ในการปิดใช้งานinit.dสคริปต์เริ่มต้นสำหรับredis:

sudo update-rc.d redis-server disable

จากนั้นสร้าง/etc/init/redis-server.confด้วยสคริปต์ต่อไปนี้:

description "redis server"

start on runlevel [23]
stop on shutdown

exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf

respawn

สิ่งนี้คือสคริปต์เพื่อupstartให้ทราบว่าต้องรันคำสั่งใดเพื่อเริ่มกระบวนการ บรรทัดสุดท้ายยังบอกupstartให้พยายามเกิดใหม่ต่อไปหากมันตาย

สิ่งหนึ่งที่ผมได้มีการเปลี่ยนแปลงในการ/etc/redis/redis.confเป็นไปdaemonize yes daemonize noจะเกิดอะไรขึ้นถ้าคุณไม่เปลี่ยนมันredis-serverจะแยกและแสดงผลตัวเองและกระบวนการหลักจะหายไป เมื่อสิ่งนี้เกิดขึ้นupstartคิดว่ากระบวนการได้ตาย / หยุดลงและคุณจะไม่สามารถควบคุมกระบวนการจากภายในได้upstartได้

ตอนนี้คุณสามารถใช้คำสั่งต่อไปนี้เพื่อควบคุมของคุณredis-server:

sudo start redis-server
sudo restart redis-server
sudo stop redis-server

หวังว่านี่จะเป็นประโยชน์!


9

เป็นวิธีที่ดีกว่าในการเชื่อมต่อกับ redis ของคุณ

ตอนแรกตรวจสอบ ip address ของ redis server แบบนี้

ps -ef | grep redis

ผลลัพธ์เป็นชนิด "redis 1184 1 0 .... / usr / bin / redis-server 172.xxx:6379

จากนั้นคุณสามารถเชื่อมต่อกับ redis ด้วยตัวเลือก -h (ชื่อโฮสต์) เช่นนี้

redis-cli -h 172.xxx


2

ในกรณีของฉันเป็นรหัสผ่านที่มีอักขระบางตัวเช่น'หลังจากเปลี่ยนแล้วเซิร์ฟเวอร์เริ่มทำงานโดยไม่มีปัญหา



1

ฉันเพิ่งมีปัญหาเดียวกันนี้เนื่องจากฉันใช้ไวยากรณ์ที่ไม่เหมาะสมในไฟล์กำหนดค่าของฉัน ฉันตั้งใจจะเพิ่ม:

maxmemory-policy allkeys-lru

ไปยังไฟล์ config ของฉัน แต่เพิ่มเฉพาะ:

allkeys-lru

ซึ่งเห็นได้ชัดว่าทำให้ Redis ไม่สามารถแยกวิเคราะห์ไฟล์ config ซึ่งจะทำให้ฉันไม่สามารถเชื่อมต่อผ่าน cli การแก้ไขไวยากรณ์นี้ทำให้ฉันสามารถเชื่อมต่อกับ Redis ได้


1

หากมีปัญหากับhomebrew MacOSปัญหาคือการอนุญาตบางประเภทที่ขาดหายไปใน/usr/local/var/logไดเรกทอรีโปรดดูปัญหาที่นี่

เพื่อแก้ปัญหานี้ฉันลบ/usr/local/var/logและติดตั้ง redis ใหม่brew reinstall redis


1

ก่อนอื่นคุณต้องอัพ / เริ่มต้นโหนด redis ทั้งหมดโดยใช้คำสั่งด้านล่างทีละรายการสำหรับไฟล์ conf ทั้งหมด @ หมายเหตุ: หากคุณกำลังตั้งค่าคลัสเตอร์คุณควรมี 6 โหนด 3 จะเป็น master และ 3 จะเป็น slave.redis-cli จะเลือก master และ slave จาก 6 โหนดโดยอัตโนมัติโดยใช้คำสั่ง --cluster ดังที่แสดงในคำสั่งด้านล่างของฉัน .

[xxxxx@localhost redis-stable]$ redis-server xxxx.conf 

จากนั้นเรียกใช้

[xxxxx@localhost redis-stable]$ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

ผลลัพธ์ข้างต้นควรเป็นดังนี้:

    >>> Performing hash slots allocation on 6 nodes...

วิธีที่ 2 ในการตั้งค่าทุกสิ่งโดยอัตโนมัติ: คุณสามารถใช้ utils / create-cluster scripts เพื่อตั้งค่าทุกสิ่งสำหรับคุณเช่นการเริ่มต้นโหนดทั้งหมดสร้างคลัสเตอร์ที่คุณติดตาม https://redis.io/topics/cluster-tutorial

ขอบคุณ


1

เช่นเดียวกับแอรอนในกรณีของฉันbrew services listอ้างว่า redis กำลังทำงานอยู่ แต่มันไม่ใช่ ฉันพบข้อมูลต่อไปนี้ในไฟล์บันทึกของฉันที่/usr/local/var/log/redis.log:

4469:C 28 Feb 09:03:56.197 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4469:C 28 Feb 09:03:56.197 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=4469, just started
4469:C 28 Feb 09:03:56.197 # Configuration loaded
4469:M 28 Feb 09:03:56.198 * Increased maximum number of open files to 10032 (it was originally set to 256).
4469:M 28 Feb 09:03:56.199 # Creating Server TCP listening socket 192.168.161.1:6379: bind: Can't assign requested address

ปรากฎว่าเกิดจากการกำหนดค่าต่อไปนี้:

bind 127.0.0.1 ::1 192.168.161.1

ซึ่งจำเป็นในการให้เครื่องเสมือน VMWare Fusion ของฉันเข้าถึงเซิร์ฟเวอร์ redis บน macOS ซึ่งเป็นโฮสต์ แต่ถ้าเครื่องเสมือนไม่ได้เริ่มต้นความล้มเหลวนี้มีผลผูกพันที่เกิด Redis ไม่ได้ที่จะเริ่มต้นขึ้นในทุก ดังนั้นการสตาร์ทเครื่องเสมือนจึงช่วยแก้ปัญหาได้


1

ลองสิ่งนี้:

sudo service redis-server restart

ฉันใช้ Windows WSL Ubuntu และได้รับข้อผิดพลาดในเทอร์มินัลของฉัน npm ผิดพลาด! รหัส ELIFECYCLE npm ERR! errno 1 ดังนั้นลองทุกอย่างแล้วมันไม่ทำงานโดยเฉพาะใน Windows นั่นเป็นเหตุผลที่ลองรีสตาร์ทบริการ redis บน Ubuntu และทำงานได้ดีอย่างสมบูรณ์! นั่นคือทั้งหมด
Jhune Carlo Trogelio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.