有两种配置方式:可以通过apt-get install redis-server命令直接安装;也可以通过官网的安装包编译,安装。我主要是通过命令安装。安装配置好数据库后需要安装C语言开发的额外头文件和库函数(hiredis)。

一、安装

1、通过命令安装(CentOS7不支持)

通过命令安装,直接通过命令安装的方式,过程简单,且启动和关闭只需输入相应的命令,而不需去特定的文件夹执行命令

  1. sudo dnf install redis
  2. sudo dnf install redis-server #fedora
  3. apt-get install redis-server //Ubuntu Redis服务器会自动启动(端口6379未被占用时)。

启动服务
(在fedora32上可以直接实现,其他系统可能需要自己编写service文件放在/etc/systemd/system/下)

  1. systemctl start redis.service #启动redis服务
  2. systemctl stop redis.service #停止redis服务
  3. systemctl restart redis.service #重新启动服务
  4. systemctl status redis.service #查看服务当前状态
  5. systemctl enable redis.service #设置开机自启动
  6. systemctl disable redis.service #停止开机自启动
  7. systemctl start redis #启动redis服务
  8. systemctl stop redis #停止redis服务
  9. systemctl restart redis #重新启动服务
  10. systemctl status redis #查看服务当前状态
  11. systemctl enable redis #设置开机自启动
  12. systemctl disable redis #停止开机自启

2、通过源文件安装

自动安装脚本:(下面的步骤可以通过此脚本实现)
install.sh
自动安装所需文件:
image.png

(1)下载redis源文件

https://redis.io/download
http://download.redis.io/releases/
根据系统的版本选着redis的版本,centos7版本相对老旧,故选择5.0版本

  1. [root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz

(2)解压安装包并编译

  1. [root@localhost local]# tar -zxvf redis-5.0.3.tar.gz
  2. [root@localhost local]# cd redis-5.0.3
  3. [root@localhost redis-5.0.3]# make

(3)安装到指定根目录

image.png
上图是makefile文件中关于安装目录的配置,默认安装在/usr/local/bin目录下,为了与命令安装效果一致,我们安装在/usr/bin录下

  1. [root@localhost redis-5.0.3]# make install PREFIX=/usr

(4)复制配置文件

image.png
可以看到这解压过的文件夹里有redis.conf这个文件,我们需要复制到/etc/redis文件夹下(只用这个目录为了与通过命令安装的redis保持一致)

  1. [root@localhost redis-5.0.3]# mkdir /etc/redis/
  2. [root@localhost redis-5.0.3]# cp redis.conf /etc/redis/

(5)启动redis-server

1)前台启动

  1. [root@localhost redis-5.0.3]# cd /usr/local/redis/bin/
  2. [root@localhost bin]# ./redis-server /etc/redis/redis.conf

2)后台启动
修改 /etc/redis/redis.conf 文件,把 daemonize no 改为 daemonize yes

  1. [root@localhost redis]# vi redis.conf

Linux服务器下Redis数据库配置 - 图4
后台启动

  1. [root@localhost bin]# ./redis-server /etc/redis/redis.conf

Linux服务器下Redis数据库配置 - 图5

(6)设置开机启动
**

  1. [root@localhost bin]# vi /etc/systemd/system/redis.service
  2. //针对Systemed的调用systemd流程(目前采用的系统服务启动方式)
  3. //写入redis.service文件的内容
  4. [Unit]
  5. Description=Redis persistent key-value database
  6. After=network.target
  7. After=network-online.target
  8. Wants=network-online.target
  9. [Service]
  10. ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --daemonize no --supervised systemd
  11. Type=notify
  12. User=root
  13. Group=root
  14. RuntimeDirectory=/home/
  15. [Install]
  16. WantedBy=multi-user.target
  • 设置开机启动

    1. [root@localhost bin]# systemctl daemon-reload
    2. [root@localhost bin]# systemctl start redis.service
    3. [root@localhost bin]# systemctl enable redis.service
    4. [root@localhost bin]# systemctl daemon-reload
    5. [root@localhost bin]# systemctl start redis
    6. [root@localhost bin]# systemctl enable redis
  • 服务操作命令 ```bash

systemctl start redis.service #启动redis服务 systemctl stop redis.service #停止redis服务 systemctl restart redis.service #重新启动服务 systemctl status redis.service #查看服务当前状态 systemctl enable redis.service #设置开机自启动 systemctl disable redis.service #停止开机自启动 或 systemctl start redis #启动redis服务 systemctl stop redis #停止redis服务 systemctl restart redis #重新启动服务 systemctl status redis #查看服务当前状态 systemctl enable redis #设置开机自启动 systemctl disable redis #停止开机自启

  1. <a name="vfusA"></a>
  2. ## 二、配置说明
  3. - **启动配置文件所在目录/etc/redis**
  4. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1568683/1591672347110-53be2265-ee4e-478c-aeef-092ce584b260.png#crop=0&crop=0&crop=1&crop=1&height=35&id=FjWPL&margin=%5Bobject%20Object%5D&name=image.png&originHeight=35&originWidth=532&originalType=binary&ratio=1&rotation=0&showTitle=false&size=6247&status=done&style=shadow&title=&width=532)
  5. <a name="rG7Fz"></a>
  6. ### 1、查看启动状态
  7. 使用netstat -tnul命令可以看到端口使用情况和redis服务器状态。<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1568683/1591672347250-b3b9dcbf-dab5-43f4-8bd2-1566a2187b90.png#crop=0&crop=0&crop=1&crop=1&height=239&id=GPmTP&margin=%5Bobject%20Object%5D&name=image.png&originHeight=239&originWidth=788&originalType=binary&ratio=1&rotation=0&showTitle=false&size=23253&status=done&style=shadow&title=&width=788)<br />注意:这里我已经修改过绑定ip,redis默认绑定127.0.0.1(本地ip),监听6379端口。
  8. <a name="ZRvGy"></a>
  9. ### 2、修改配置文件(redis.conf)
  10. ```bash
  11. vim /etc/redis/redis.conf
  • 注意 绑定IP:因为需要远程调试,所以需要将redis默认绑定ip:127.0.0.1注释掉,修改成bind 0.0.0.0

image.png

  • 添加Redis访问验证:Redis服务器默认是不需要密码的,假设设置密码**。**

去掉requirepass 前面的注释#,在后面添加密码requirepass **
image.png
注:根据配置文件的说明,当设置密码后,我们在使用客户端连接服务端时需要先进行验证
AUTH **

3、配置完成后重新启动服务器

/etc/init.d/redis-server restart
service redis-server restart
redis-server /etc/redis/redis.conf     //这三条命令均可以重新加载配置文件,启动。

4、启动客户端

安装Redis服务器时,会自动地一起安装Redis命令行客户端程序。
输入 redis-cli启动客户端;如果想连接远程服务端可以使用redis-cli -h IP,如redis-cli -h 101.37.202.62。
如果设置了密码** 可以在启动时输入redis-cli -a **,也可以在客户端启动后输入AUTH **
image.png

5、自启动服务(系统不一定支持,可能需要编写service文件)

systemctl start redis.service   #启动redis服务
systemctl stop redis.service   #停止redis服务
systemctl restart redis.service   #重新启动服务
systemctl status redis.service   #查看服务当前状态
systemctl enable redis.service   #设置开机自启动
systemctl disable redis.service   #停止开机自启动
或
systemctl start redis   #启动redis服务
systemctl stop redis   #停止redis服务
systemctl restart redis  #重新启动服务
systemctl status redis  #查看服务当前状态
systemctl enable redis  #设置开机自启动
systemctl disable redis  #停止开机自启

三、安装Hiredis开发库

Hiredis是Redis数据库的一个极简C客户端库,只是对Redis协议的最小支持。
它是简约的,因为它仅增加了对该协议的最小支持,但与此同时,它使用了类似于printf的高级API,以使其比其最小的代码库和缺少显式绑定所建议的级别更高。每个Redis命令。
除了支持发送命令和接收答复外,它还带有与I / O层分离的答复解析器。它是一种为易于重用而设计的流解析器,例如,可以在更高级别的语言绑定中使用它来进行有效的回复解析。
Hiredis仅支持二进制安全的Redis协议,因此您可以将其用于任何版本=> 1.2.0的Redis。
该库带有多个API。有 同步API异步API答复解析API

1、通过命令安装Hiredis

#Fedora
[mate@fedora ~]$ sudo dnf install hiredis
[mate@fedora /]$ sudo dnf install redis-devel
[mate@fedora /]$ sudo dnf install hiredis-devel

#Ubuntu
ate@intel-nuc:~$ sudo apt install libhiredis-dev

2、通过源文件安装Hiredis

**

(1)安装hiredis

源码地址:https://github.com/redis/hiredis

编译:make
安装:make install

(2)开发库安装所在目录

注意安装后的文件已安装在/usr/local/lib目录下,但是这个目录不是系统默认的动态库加载目录,所以要将生成的库文件libhiredis.a、libhiredis.so、libhiredis.so.0.15三个文件放进默认的加载路径/lib或/usr/lib。生成的头文件夹hiredis放进/usr/include/。

(3)库目录

/usr/lib,此路径是系统默认库目录,故编译时直接引用,不需指明库所在路径。

root@mate-Vostro-14-5459:/usr/lib# ls |grep redis
hiredis
libhiredis.a
libhiredis.so
libhiredis.so.0.15

(4)头文件目录

路径/usr/include是系统默认头文件路径,引用时直接写“#include

root@mate-Vostro-14-5459:/usr/include/hiredis# ls
adapters  alloc.h  async.h  hiredis.h  read.h  sds.h

四、安装事件库

支持redis的消息订阅

1、通过命令安装事件库(libevent)(非必要)

[mate@localhost ~]$ sudo dnf install libevent-devel
Last metadata expiration check: 0:03:20 ago on Mon 15 Jun 2020 04:52:16 PM CST.
Dependencies resolved.
================================================================================
Package               Architecture  Version                Repository     Size
================================================================================
Installing:
libevent-devel        x86_64        2.1.8-8.fc32           fedora         92 k
Transaction Summary
================================================================================
Install  1 Package
Total download size: 92 k
Installed size: 418 k
Is this ok [y/N]: y
Downloading Packages:
libevent-devel-2.1.8-8.fc32.x86_64.rpm          200 kB/s |  92 kB     00:00   
--------------------------------------------------------------------------------
Total                                           198 kB/s |  92 kB     00:00   
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : libevent-devel-2.1.8-8.fc32.x86_64                     1/1
  Running scriptlet: libevent-devel-2.1.8-8.fc32.x86_64                     1/1
  Verifying        : libevent-devel-2.1.8-8.fc32.x86_64                     1/1
Installed:
  libevent-devel-2.1.8-8.fc32.x86_64                                           
Complete!

2、通过源文件安装事件库(libevent)(非必要)

(1)官网

libevent版本一共有1.4系列和2.0系列两个稳定版本。

1.4系列比较古老,但是源码简单,适合源码的学习 2.0系列比较新,见识直接使用2.0

需要注意的是,1.4系列和2.0系列两个版本的接口并不兼容,就是2.0将一些接口的原型发>生了改变,所以将1.4升级到2.0需要重新编码。

(2)特点

  • 事件驱动,高性能;
  • 轻量级,专注于网络;
  • 跨平台,支持 Windows、Linux、Mac Os等;
  • 支持多种 I/O多路复用技术, epoll、poll、dev/poll、select 和kqueue 等;
  • 支持 I/O,定时器和信号等事件;

    (3)安装

    1. 下载源文件:http://libevent.org/
    2. 解压安装:开源程序都会有一个Readme文件,里面的有安装步骤:如下
      ## Autoconf
      $ ./configure
      $ make
      $ make verify   # (optional)
      $ sudo make install
      

      (4)安装目录

      注意安装后的文件已安装在/usr/local/lib目录下,但是这个目录不是系统默认的动态库加载目录,所以要将生成的库文件文件放进默认的加载路径/lib或/usr/lib。生成的头文件(或文件夹)放进/usr/include/。
    • 链接库目录:/usr/lib,此路径是系统默认库目录,故编译时直接引用,不需指明库所在路径。
    • 头文件目录:路径/usr/include是系统默认头文件路径,引用时直接写“#include

    • 五、关于linux下程序寻找动态库路径

  • 编译生成时,指定的搜索路径。

在makefile中,一般使用”-Wl -rpath”来指明程序运行时到哪个路径去找库。当指定多个动态库搜索路径时,路径之间用冒号隔开,不能有空格。

  • 环境变量LD_LIBRARY_PATH中指定的路径。

可以使用 echo LD_LIBRARY_PATH查看。一般初始时/lib和/user/lib库包含在里面。用户可以往里面添加。

  • /etc/ld.so.cache中缓存的路径。

/etc/ld.so.conf的第一行有一个引用命令:include ld.so.conf.d/*.conf, 所以可以通过修改/etc/ls.so.conf这个配置文件来增删路径,也可以增加一个.conf文件来配置特有的动态库路径。直接将寻库路径加进来即可,保存后需要运行一下ldconfig重载一下。

  • 默认的/lib/和/usr/lib。

这两个路径是系统最初就添加在LD_LIBRARY_PATH中,所以将库移动到这里亦可以寻找到。
但是还是会出现error while loading shared libraries: libhiredis.so.0.10: cannot open shared object file: No such file or directory 是动态库的问题,是系统找不到这个动态库,此时记住sudo /sbin/ldconfig下,更新一下系统动态库配置