一.redis安装
首先进入到/usr/local目录下,然后
1.安装gcc 环境:yum -y install gcc-c++
2.使用yum安装wget:yum install wget
3.使用wget下载redis安装包:wget http://download.redis.io/releases/redis-4.0.6.tar.gz
4.解压redis:tar -zxf redis-4.0.6.tar.gz
5.修改解压缩文件名为redis: mv redis-4.0.6 redis
6.到redis目录下编译安装:cd redis ------>make MALLOC=libc ----->cd src && make install
7.启动测试是否安装成功:./redis-server
由上面我们可以看到启动成功,端口号是6379(默认的)
二.redis三种启动方式
1.redis直接启动:./redis-server
上面启动测试安装是否成功就是使用的这种方式,但是这种启动方式是进程级别的,如果我们Ctrl+C关闭进程,那么redis也由此关闭了,所以在生产环境中使用这种就是很不靠谱的。
2.通过指定的配置文件启动:
redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。但当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
我们的配置文件是redis下面的redis.conf,我们使用vim 命令打开该配置文件,然后使用/daem搜索到守护进程这个配置进行修改
,按i键进入修改,将daemonize 修改为yes,然后按Esc键退出编辑,再输入:wq,然后回车保存退出
然后我们到src下面以配置文件的方式启动:./redis-server /usr/local/redis/redis.conf,这样就后台启动成功了
3.使用redis启动脚本设置开机自启动:
我们先将上面启动的redis服务先杀掉:
3.1.redis 提供了一个自启动的脚本redis_init_script ,位于Redis的 /utils/ 目录下
3.2.linux配置开启自启动是在/etc/init.d文件夹下, 所以我们要将我们redis的脚本以及配置文件移到/etc下面,我们先在/etc下面建一个redis的文件夹:mkdir redis,然后将redis.conf配置文件拷贝到/etc/redis下面并重命名为6379.conf
cp /usr/local/redis/redis.conf /etc/redis/6379.conf
3.3.然后再将redis的脚本拷贝到/etc/init.d下面并重命名为redisd:cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd
3.4.设置为开机自启动,直接配置开启自启动 chkconfig redisd on 发现错误: service redisd does not support chkconfig
解决办法,在启动脚本开头添加如下注释来修改运行级别:
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
#
上面的注释的意思是,redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。
然后我们再设置开机启动,发现已经好了,这时候redis就已经起好了。
chkconfig redisd on
#打开服务
service redisd start
#关闭服务
service redisd stop
注意:如果出现服务起不起来直接重启下虚拟机或者服务器就好了
如果死活客户端连不上redis服务,可能是如下几种情况之一
1.将6379.conf中bind 127.0.0.1改为0.0.0.0,也就是允许远程访问
2.需要在配置文件设置密码,使用密码连接 protected 设置为yes,
然后将requirepass 属性后面加上你想要设的密码,然后重启redis服务就可以了
redis客户端连接redis
redis-cli -h host -p port -a password
host:远程redis服务器host
port:远程redis服务端口
password:远程redis服务密码(无密码的的话就不需要-a参数了)