有两种配置方式:可以通过apt-get install redis-server命令直接安装;也可以通过官网的安装包编译,安装。我主要是通过命令安装。安装配置好数据库后需要安装C语言开发的额外头文件和库函数(hiredis)。
一、安装
1、通过命令安装(CentOS7不支持)
通过命令安装,直接通过命令安装的方式,过程简单,且启动和关闭只需输入相应的命令,而不需去特定的文件夹执行命令。
sudo dnf install redis
或
sudo dnf install redis-server #fedora
apt-get install redis-server //Ubuntu ,Redis服务器会自动启动(端口6379未被占用时)。
启动服务
(在fedora32上可以直接实现,其他系统可能需要自己编写service文件放在/etc/systemd/system/下)
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 #停止开机自启
2、通过源文件安装
自动安装脚本:(下面的步骤可以通过此脚本实现)
install.sh
自动安装所需文件:
(1)下载redis源文件
https://redis.io/download
http://download.redis.io/releases/
根据系统的版本选着redis的版本,centos7版本相对老旧,故选择5.0版本
[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz
(2)解压安装包并编译
[root@localhost local]# tar -zxvf redis-5.0.3.tar.gz
[root@localhost local]# cd redis-5.0.3
[root@localhost redis-5.0.3]# make
(3)安装到指定根目录
上图是makefile文件中关于安装目录的配置,默认安装在/usr/local/bin目录下,为了与命令安装效果一致,我们安装在/usr/bin录下
[root@localhost redis-5.0.3]# make install PREFIX=/usr
(4)复制配置文件
可以看到这解压过的文件夹里有redis.conf这个文件,我们需要复制到/etc/redis文件夹下(只用这个目录为了与通过命令安装的redis保持一致)
[root@localhost redis-5.0.3]# mkdir /etc/redis/
[root@localhost redis-5.0.3]# cp redis.conf /etc/redis/
(5)启动redis-server
1)前台启动
[root@localhost redis-5.0.3]# cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server /etc/redis/redis.conf
2)后台启动
修改 /etc/redis/redis.conf 文件,把 daemonize no 改为 daemonize yes
[root@localhost redis]# vi redis.conf
后台启动
[root@localhost bin]# ./redis-server /etc/redis/redis.conf
(6)设置开机启动
**
[root@localhost bin]# vi /etc/systemd/system/redis.service
//针对Systemed的调用systemd流程(目前采用的系统服务启动方式)
//写入redis.service文件的内容
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --daemonize no --supervised systemd
Type=notify
User=root
Group=root
RuntimeDirectory=/home/
[Install]
WantedBy=multi-user.target
设置开机启动
[root@localhost bin]# systemctl daemon-reload
[root@localhost bin]# systemctl start redis.service
[root@localhost bin]# systemctl enable redis.service
或
[root@localhost bin]# systemctl daemon-reload
[root@localhost bin]# systemctl start redis
[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 #停止开机自启
<a name="vfusA"></a>
## 二、配置说明
- **启动配置文件所在目录/etc/redis**
![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)
<a name="rG7Fz"></a>
### 1、查看启动状态
使用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端口。
<a name="ZRvGy"></a>
### 2、修改配置文件(redis.conf)
```bash
vim /etc/redis/redis.conf
- 注意 绑定IP:因为需要远程调试,所以需要将redis默认绑定ip:127.0.0.1注释掉,修改成bind 0.0.0.0
- 添加Redis访问验证:Redis服务器默认是不需要密码的,假设设置密码**。**
去掉requirepass 前面的注释#,在后面添加密码requirepass **
注:根据配置文件的说明,当设置密码后,我们在使用客户端连接服务端时需要先进行验证
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 **;
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
四、安装事件库
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)官网
- 官方网站:http://libevent.org/
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 等;
-
(3)安装
- 下载源文件:http://libevent.org/
- 解压安装:开源程序都会有一个Readme文件,里面的有安装步骤:如下
## Autoconf $ ./configure $ make $ make verify # (optional) $ sudo make install
(4)安装目录
注意安装后的文件已安装在/usr/local/lib目录下,但是这个目录不是系统默认的动态库加载目录,所以要将生成的库文件文件放进默认的加载路径/lib或/usr/lib。生成的头文件(或文件夹)放进/usr/include/。
编译生成时,指定的搜索路径。
在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下,更新一下系统动态库配置