首页数据库 正文

Redis 安装和配置

时间: 2020年4月17日 浏览 4589

1、下载

windows下载:
下载地址:
http://redis.io/download
下载后使用xftp上传到Linux服务器

Linux命令下载:

wget http://download.redis.io/releases/redis-3.0.3.tar.gz

2、安装

解压:

tar xzf redis-3.0.3.tar.gz

进入redis目录:

cd redis-3.0.3

检查环境:

./runtest

提示:You need tcl 8.5 or newer in order to run the Redis test

安装tcl:

yum install tcl

(服务器需要连接外网)
编译:

make

make报错如下:(make是用来编译的,从Makefile中读取指令,安装到指定的位置)

make[3]: gcc:命令未找到
make[3]: *** [net.o] 错误 127
make[3]: Leaving directory `/opt/redis-3.0.3/deps/hiredis'
make[2]: *** [hiredis] 错误 2
make[2]: Leaving directory `/opt/redis-3.0.3/deps'
make[1]: [persist-settings] 错误 2 (忽略)
  CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] 错误 127
make[1]: Leaving directory `/opt/redis-3.0.3/src'
make: *** [all] 错误 2

安装gcc:

yum install gcc

(服务器需要连接外网,cc是gcc的连接。gcc是编译器.)

继续编译:

make

make报错如下:

cd src && make all
make[1]: Entering directory `/opt/redis-3.0.3/src'
  CC adlist.o
在包含自 adlist.c:34 的文件中:
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
zmalloc.h:55:2: 错误:#error "Newer version of jemalloc required"
make[1]: *** [adlist.o] 错误 1
make[1]: Leaving directory `/opt/redis-3.0.3/src'
make: *** [all] 错误 2

参考网址:http://www.phperz.com/article/14/1219/42002.html

重新编译:

make MALLOC=libc

编译成功

安装:

make instal

redis默认安装在‘/usr/local/bin’(make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。)

将配置文件拷贝到/etc文件夹:

cp redis.conf /etc/

执行如下命令,这样就不用在执行时加上./了,而且可以在任何地方执行:

cp redis-benchmark redis-cli redis-server /usr/bin/ #

3、配置

进入配置文件的文件夹:

cd etc/

打开配置文件:

vi redis.conf

常用配置如下:

#修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。
daemonize no
#可修改默认监听端口,如果改了端口启动时需要指定端口号,“ redis-cli -p 6380”
port 6379
#修改生成默认日志文件位置
logfile "/home/Book/logs/redis.log"
#配置持久化文件存放位置
dir /home/Book/data/redisData
#设置redis的密码,默认情况下“requirepass foobared”是被注释的,去掉注释,将“ foobared”改为要设置的密码,重启redis后生效
requirepass foobared

4、直接启动

进入安装路径

cd /usr/local/bin

启动redis(加上&号使redis以后台程序方式运行)

./redis-server &

检测后台进程是否存在

ps -ef |grep redis

检测6379端口是否在监听

netstat -lntp | grep 6379

使用redis-cli客户端检测连接是否正常

 ./redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"

5、指定配置文件启动

进入安装路径

cd /usr/local/bin

启动redis

./redis-server /etc/redis.conf

6、停止

使用客户端

redis-cli shutdown

因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的

kill -9 PID

7、设置开机自启动

启动脚本 redis_init_script 位于第2步中解压的安装包的/utils/文件夹下,内容如下:

#浏览启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
#redis服务器监听的端口
REDISPORT=6379
#服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"
……

根据启动脚本redis_init_script 的要求,将修改好的配置文件以端口为名复制一份到指定目录。需使用root用户

创建文件夹redis

mkdir /etc/redis

复制配置文件到指定目录

cp redis.conf /etc/redis/6379.conf

将启动脚本redis_init_script 复制到/etc/init.d目录下,并将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)

cp redis_init_script /etc/init.d/redisd 

设置为开机自启动

chkconfig redisd on

会报“redisd 服务不支持 chkconfig”,参考文章http://www.cnblogs.com/goodspeed/archive/2012/10/18/2729615.html,在启动脚本开头添加如下两行注释以修改其运行级别:

#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database

再次尝试设置开机自启动

chkconfig redisd on

重启机器,查看redis服务是否自启动

服务未启动,经过排查是配置文件有问题,从别处重新拷贝了一个配置文件替换后,可以启动。
查看redis的log推测应该是我设置的持久化路径有问题导致的,但是没有具体去验证。
以上设置完成后,可以直接通过下面的方式启动和停止redis。
启动redis:

service redisd start

停止redis:

service redisd stop

8、配置redis的认证密码

在第3步“配置”中提到通过修改配置文件的方式配置认证密码,本例中我们设置的密码是123456

#设置redis密码
requirepass 123456

设置密码后,登录redis有两种方式:
方式一:

[root@Clean-CentOS-X64 bin]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
127.0.0.1:6379>

方式二:

[root@Clean-CentOS-X64 bin]# redis-cli -a 123456
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
127.0.0.1:6379>

此外,还可以通过命令设置redis的密码:

[root@Clean-CentOS-X64 bin]# redis-cli -a 123456
127.0.0.1:6379> config set requirepass book
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "book"
127.0.0.1:6379>

注意:
通过命令设置密码后,如果重启redis服务,密码会恢复为配置文件中设置的密码。
如果设置有主从同步,master配置了密码则slave也要配置相应的密码参数