I am working with Laravel but i have installed all on my own (php, mysql, composer, nginx) and now i need to install Redis and configure it so i could use it for queue driver in Laravel.

How to install it, because it cannot be installed through apt-get install redis

i get this error:

ubuntu@ubuntu:~$ sudo apt-get install redis
[sudo] password for ubuntu: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package redis
  • 12
    sudo apt-get install redis-server – Darren Weber May 1 '17 at 22:25
  • E: Unable to locate package redis-server ...? Linux ubuntu-xenial 4.4.0-112-generic – citynorman Jul 8 at 2:36
  • Are you trying to install this on Windows? I mean there is E: in your line? – lewis4u Jul 8 at 6:59
up vote 40 down vote accepted

To install redis follow these steps:

  1. Set up a non-root user with sudo privileges

  2. Install build and test dependencies:

    sudo apt update
    sudo apt full-upgrade
    sudo apt install build-essential tcl
    
  3. Set up redis:

    1. Download latest copy via this link or with this

      curl -O http://download.redis.io/redis-stable.tar.gz
      
    2. Create a temporary folder for it in say your /home/username/redis-stable directory
    3. Move into created folder and extract it

      tar xzvf redis-stable.tar.gz
      
    4. Change into the folder cd redis-stable and build it with

      make
      make test
      sudo make install
      
  4. Configure redis:

    1. Create configuration directory:

      sudo mkdir /etc/redis
      
    2. Move sample redis configuration file:

      sudo cp /home/george/redis-stable/redis.conf /etc/redis
      
    3. Edit the file:

      sudo nano /etc/redis/redis.conf # or with any other text editor
      
    4. Make two changes there:
      supervised no to supervised systemd
      dir to dir /var/lib/redis # for persistent data dump
  5. Set up the systemd unit file:

    sudo nano /etc/systemd/system/redis.service
    

    Add the text:

    [Unit]
    Description=Redis In-Memory Data Store
    After=network.target
    
    [Service]
    User=redis
    Group=redis
    ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
    ExecStop=/usr/local/bin/redis-cli shutdown
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  6. Set up redis user, groups and directories:

    create redis user and group with same ID but no home directory:

    sudo adduser --system --group --no-create-home redis   
    sudo mkdir /var/lib/redis   # create directory
    sudo chown redis:redis /var/lib/redis   # make redis own /var/lib/redis
    sudo chmod 770 /var/lib/redis   # adjust permission
    
  7. Test redis:

    1. Start redis service:

      sudo systemctl start redis
      
    2. Check status:

      systemctl status redis
      

      Result of status if started successfully:

      Output
      ● redis.service - Redis Server
       Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
       Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
       Main PID: 3124 (redis-server)
       Tasks: 3 (limit: 512)
       Memory: 864.0K
       CPU: 179ms
       CGroup: /system.slice/redis.service
                └─3124 /usr/local/bin/redis-server 127.0.0.1:6379
      
    3. Test instance:

      1. Connect:

        redis-cli
        
      2. Test connectivity at prompt:

        127.0.0.1:6379> ping   # result PONG
        
      3. Check ability to set keys:

        127.0.0.1:6379 set test "It's working!"  # result ok
        
      4. Get the key just set:

        127.0.0.1:6379 get test  # result "It's working!"
        
      5. Exit redis:

        127.0.0.1:6379 exit
        
      6. Restart redis and then re-run steps 1, 4, and 5 to connect with the client again and confirm that your test value is still available, hence it's working as expected:

        sudo systemctl restart redis
        
  8. Enable redis to start at boot:

    sudo systemctl enable redis
    

Source:

Digital Ocean - how to install and configure redis on Ubuntu 16.04

Direct download links

  • 3
    This is a very nice answer. Thank you George – lewis4u Jan 6 '17 at 22:19
  • 3
    If you want to install the latest version this is the route to take but if your are not so concerned about getting the latest then sudo apt-get install redis-server is the path to tow. Again this is an opportunity to learn how redis actually works and how it is setup. I personally prefer to do it this way so I know in and outs of the system and can alter it to suit my needs and expectations. – George Udosen Jan 8 '17 at 22:11
  • 1
    @TiagoBertolo obrigado! – George Udosen Apr 19 '17 at 14:40
  • 1
    @PrimeTimeTran I think he means re-run steps 1, 4 and 5 of step 7:3, not of the overall procedure. – muru Mar 9 at 8:03
  • 1
    Everything worked fine. Thanks. – piepi Apr 11 at 3:55

I think always is better (and simpler) to install from main repos as first option if you don't have any special requirements.

The package you are searching for is named redis-server. You can check its package info with apt show redis-server.

Also yo can search all packages mentioning redis with apt search redis, or even do some simple filtering using grep, use apt search redis | grep php to search for php-redis or related package(s) for example.

So, you can simply run:

sudo apt install redis-server

on your terminal, to install a fully working redis(server) environment.

If you have any special requirements, you always can build from source and install as @George posted on his answer.

Hope it helps.

  • are there 2 versions of redis? a normal redis and a server redis or what, now i'm confused a bit – lewis4u Jan 8 '17 at 14:13
  • 5
    OK i have tested it out and i came to a conclusion that i don't need to do anything except sudo apt-get install redis-server i don't know what that all is about in the answer above...somehow it is not necessary to do all of that!? – lewis4u Jan 8 '17 at 20:43
  • 5
    I think its related to personal preferences, some people prefers building from source (and doing it for each software version) to keep more up to date, etc. I disagree with this except for very special cases, like I mentioned (with a stable system in mind), I prefer Ubuntu team packages because they are pretty well tested against all Ubuntu systems (desktop, server, core, cloud). – dgonzalez Jan 8 '17 at 21:01
  • 1
    OK...for my needs apt-get install redis-server is more than enough – lewis4u Jan 8 '17 at 21:06
  • 11
    This should be the accepted answer – Nam G VU Jun 15 '17 at 6:03

As described here. First add PPA repository to your OS then update your repository list and install it.

sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get update
sudo apt-get install redis-server
  • 2
    using ppa is far more convenient – cwhsu Sep 30 '17 at 7:45
  • 4
    This worked great to upgrade in place from the default 3.0 version available in the standard repo to version 4.0 in Ubuntu 16.04. Thanks – jamescampbell Dec 29 '17 at 18:32
  • 1
    Best answer!!!! – James M Apr 13 at 11:47

Following @George's answer, after running make (step 3, part 4), cd into redis-stable/utils and run ./install_server.sh.

This interactive script will help you define a port and other file locations, and after which you can immediately run redis-cli.

That same directory also has a handy script for starting and stopping the server.

  • 2
    @Zanna: Thanks! – Yaakov Mar 29 '17 at 7:31
  • Job for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details. invoke-rc.d: initscript redis-server, action "start" failed. ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Wed 2017-03-29 19:19:59 UTC; 37ms ago Docs: http://redis.io/documentation, man:redis-server(1) – Stevie G Mar 29 '17 at 19:21

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.