Running Redis as a User Daemon on OSX with launchd

If you’re developing on the mac using redis and want it to start automatically on boot, you’ll want to leverage the OSX launchd system to run it as a User Daemon. A User Daemon is a non-gui program that runs in the background as part of the system. It isn’t associated with your user account. If you only want redis to launch when a particular user logs in, you’ll want to make a User Agent instead.

From the command line, create a plist file as root in the /Library/LaunchDaemons directory with your favorite text editor:

sudo vim /Library/LaunchDaemons/io.redis.redis-server.plist

Paste in the following contents and modify it to point it to wherever you’ve got redis-server installed and optionally pass the location of a config file to it (delete the redis.conf line if you’re not using one):





	Label
	io.redis.redis-server
	ProgramArguments
	
		/usr/local/bin/redis-server
		/usr/local/etc/redis.conf
	
	RunAtLoad
	



Make sure that you actually have a redis.conf file at the location above. If you’ve installed it with homebrew that should be the correct location.

You’ll then need to load the file (one time) into launchd with launchctl:

sudo launchctl load /Library/LaunchDaemons/io.redis.redis-server.plist 

Redis will now automatically be started after every boot. You can manually start it without rebooting with:

sudo launchctl start io.redis.redis-server

You can also shut down the server with

sudo launchctl stop io.redis.redis-server

Or you could add these aliases to your bash/zsh rc file:

alias redisstart='sudo launchctl start io.redis.redis-server'
alias redisstop='sudo launchctl stop io.redis.redis-server'

If you’re having some sort of error (or just want to watch the logs), you can just fire up Console.app to watch the redis logs to see what’s going on.

7 Responses to “Running Redis as a User Daemon on OSX with launchd”

  1. Shaun Jurgemeyer

    If your redis.conf has relative paths you can also add the following to your io.redis.redis-server.plist.

    WorkingDirectory
    /projects/bloomhealth/bloomhealth
    
  2. tednaleid

    Did that work for you Shaun? I had problems starting up the server when I tried to use the WorkingDirectory key, so I switched paths so they weren’t relative in my redis.conf.

  3. Robert Ross

    If you install redis through Homebrew, they plist file is located in the Cellar path in /usr/local/Cellar/redis.

  4. tednaleid

    @Thiago thanks! I’ve actually been using something similar, but forgot to update the blog post with it. I’ve been using the redis “ping” command:

        alias redisstatus='redis-cli ping'
    

    Which will respond “PONG” if redis is up.

  5. ikodota

    thank you, I was compiled redis by myself,not found redis.conf (delete the redis.conf line if you’re not using one) ,It’s work.

Leave a Reply