Redis
Installation
To install the latest version of Redis:
- Type this in Terminal:
brew install redis
Start/Restart/Stop Redis
To start the Redis, type this in Terminal:
brew services start redisTo restart:
brew services restart redisTo stop: (or prevent Redis from started again when the Mac is reboot)
brew services stop redisNotes: If
brew services listshowing the service status is started, the service will become started again when the Mac is reboot.
Redis Sentinel
- Skip this part if you don't need to run Redis in Sentinel mode
- Create LaunchAgent
/usr/local/opt/redis/homebrew.mxcl.redis-sentinel.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <string>homebrew.mxcl.redis-sentinel</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/redis-sentinel</string> <string>/usr/local/etc/redis-sentinel.conf</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/var</string> <key>StandardErrorPath</key> <string>/usr/local/var/log/redis-sentinel.log</string> <key>StandardOutPath</key> <string>/usr/local/var/log/redis-sentinel.log</string> </dict> </plist> - Enable the LaunchAgent
cd ~/Library/LaunchAgents ln -s /usr/local/opt/redis/homebrew.mxcl.redis-sentinel.plist homebrew.mxcl.redis-sentinel.plist launchctl load homebrew.mxcl.redis-sentinel.plist - To verify:
redis-cli -p 26379
Known issue
brew services listmay return status: error on redis service once you load Redis Sentinel- But actually the Redis is running properly
- If you unload the Redis Sentinel like this
launchctl unload homebrew.mxcl.redis-sentinel.plist,brew services listwill return status to started again - No solution found yet. If you know any workaround / fix, please let me know!
Multiple Redis servers
Skip this part if you don't need to run multiple Redis servers on the same Mac
This is to create another Redis server running port 7179 and Redis Sentinel on 27179
Create data folder
mkdir -p /usr/local/var/db/redis_7179Create config file for another Redis server
/usr/local/etc/redis_7179.confport 7179 pidfile /var/run/redis_7179.pid logfile "/usr/local/var/log/redis_7179.log" dir /usr/local/var/db/redis_7179/ databases 1000 bind 127.0.0.1 ::1 bind 127.0.0.1 protected-mode yes tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize no supervised no loglevel notice save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yesAll of the settings are default except the 5 lines at the beginning. For details, refer to
/usr/local/etc/redis.confCreate config file for another Redis Sentinel
/usr/local/etc/redis-sentinel_27179.confport 27179 sentinel monitor mymaster 127.0.0.1 7179 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 dir /tmpAll of the settings are default except the 2 lines at the beginning. For details, refer to
/usr/local/etc/redis-sentinel.confCreate LaunchAgent plist for Redis Server:
/usr/local/opt/redis/homebrew.mxcl.redis_7179.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <string>homebrew.mxcl.redis_7179</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/redis-server</string> <string>/usr/local/etc/redis_7179.conf</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/var</string> <key>StandardErrorPath</key> <string>/usr/local/var/log/redis_7179.log</string> <key>StandardOutPath</key> <string>/usr/local/var/log/redis_7179.log</string> </dict> </plist>Create LaunchAgent plist for Redis Sentinel:
/usr/local/opt/redis/homebrew.mxcl.redis-sentinel_27179.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <string>homebrew.mxcl.redis-sentinel_27179</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/redis-sentinel</string> <string>/usr/local/etc/redis-sentinel_27179.conf</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/var</string> <key>StandardErrorPath</key> <string>/usr/local/var/log/redis-sentinel_27179.log</string> <key>StandardOutPath</key> <string>/usr/local/var/log/redis-sentinel_27179.log</string> </dict> </plist>Enable the LaunchAgents:
cd ~/Library/LaunchAgents ln -s /usr/local/opt/redis/homebrew.mxcl.redis_7179.plist homebrew.mxcl.redis_7179.plist ln -s /usr/local/opt/redis/homebrew.mxcl.redis-sentinel_27179.plist homebrew.mxcl.redis-sentinel_27179.plist launchctl load homebrew.mxcl.redis*7179.plistTo verify:
redis-cli -p 7179 redis-cli -p 27179