ubantu16.04环境下安装
下载安装,依次执行命令;
# 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个目录下
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
# 将下载包解压
$ tar -zxvf redis-4.0.6.tar.gz
# 进入解压后的文件夹
$ cd redis-4.0.6
# 对文件进行编译,得到可执行的文件,
$ sudo make
# 对编译的文件进行测试,时间较长,没有报错则没有问题,编译出的redis命令放在src目录下
$ sudo make test
# 一般将redis文件统一放在/usr/local目录下,因此将文件移动
$ sudo mv ./redis-4.0.6/* /usr/local/redis/
# 进入redis的目录,执行安装
$ cd /usr/local/redis/
$ sudo make install
# 生成配置文件
$ cd utils
$ ./install_server.sh
运行上面的脚本后,会让用户设置一些配置文件
Please select the redis port for this instance: [6379] # 配置启动端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] # 配置启动文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] # 配置日志文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] # 配置数据文件路径
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] # 配置redis-server和redis-cli的安装路径
注意:redis相关操作命令都存放在/usr/local/redis/src 目录下;
测试redis
启动redis服务端
$ redis-server
可看到当前的终端被阻塞,按ctrl+C可以关闭服务端,但是有时候会关闭失败,后台依旧会运行;
关闭redis-server
方法一: # 找到redis的进程ID $ ps ajx|grep redis 或 top | grep redis $ sudo kill -9 进程ID 方法二: # 使用客户端命令 $ redis-cli -h ip地址 -p 端口 shutdown # 该命令有时会报错,不成功使用方法一
启动redis的客户端
$ redis-cli
必须是在服务端打开后,客户端才能登陆,否则显示连接被拒绝;成功后进入客户端:
# 默认只有本机可以访问,端口为6379
> 127.0.0.1:6379
手动更改配置
为了适应需要,如不能阻塞终端,让redis在后台运行;可以远程访问redis,修改端口以及持久化文件的存储路径等,需要修改配置;
进入redis的配置文件redis.conf
$ cd /usr/local/redis/
$ sudo vi redis.conf
更改
允许远程访问:将 bind 127.0.0.1 这一行注释,解除绑定本机;
修改端口:将 port 6379 这一行更改为 port ****(指定自己的端口)
配置以守护进程运行:
# 找到这一行,默认不是守护进程,会阻塞终端,改成yes,在后台运行,非阻塞
daemonize no
可设置持久化文件
# 这一行表示可持久化文件存储在dump.rdb文件中,可自定义文件名;
dbfilename dump.rdb
修改持久化文件的存储路径
# 这一行表示文件存储在运行的目录下,一般需要修改位置,推荐/var/lib/redis
# 先在/var/lib的目录下创建redis文件
dir ./ 改为 dir /var/lib/redis/
设置日志文件的路径
# 找到loglevel notice这一行,在其下面:
logfile '' # 设置文件的路径,redis默认不记录日志;
移动配置文件位置,方便使用配置文件运行
# 直接使用 redis-server 命令运行,默认是阻塞终端并且端口是6379的
# 将配置文件redis.conf放置在一个专门的位置
$ sudo cp /usr/local/redis/redis.conf /etc/redis/
# 使用位置文件的方式启动,配置文件的相关参数就会生效
$ sudo redis-server /etc/redis/redis.conf
# 同时登陆客户端的方式也会更改,如果修改了端口
$ redis-cli -h host -p port
设置密码
# 如果有需要,可以为redis设置操作密码
# 进入配置文件
$ sudo vi /etc/redis/redis.conf
# 使用末行模式,搜索requirepass
$ / requirepass
$ requirepass 123456 # 取消requirepass foobared 的注释,将foobared的位置换成自己的密码
# 重新启动redis-server
$ redis-cli -h host -p port
# 执行
$ auth password(密码) # 没有这句不能进行读写操作
说明:不知道密码的情况下也是可以登录redis-cli客户端的,但是不能进行读写操作
多个redis实例说明
一台服务器上可以同时运行多个redis的实例,只需要将它们设置成不同的端口就可以了;
# 进入redis的配置文件目录 cd /etc/redis/ # 复制一份redis.conf sudo cp redis.conf redis1.conf # 修改配置文件,将运行端口更改 sudo vi redis1.conf port 6390 # 找到修改端口的那一行 # 启动redis sudo redis-server /etc/redis/redis1.conf # 这时服务器新开了一个redis的实例,与其他的完全隔离; # 多个redis的实例可以共用一份dump.rdb持久化文件,但是其内容是相互隔离的;
注意重复执行启动redis的命令,不会成功开启,而是依旧运行第一次开启的那个进程pid
安装过程遇到问题并解决
1、# ERR Client sent AUTH, but no password is set
明明在redis.conf中设置了密码,而且redis还启动了,为什么说没有密码呢?
大家都知道linux下启动redis有很多种方法,
其中有 redis-server &
这种方法启动,不会带上你的redis.conf配置文件启动
还有 redis-server /etc/redis/redis.conf &
这种方法启动的时候,会去带上配置文件redis.conf
所以如果你配置了redis.conf这个文件,那么启动redis的时候也一定要带上这个文件启动。
2、开启redis-server提示 # Creating Server TCP listening socket *:6379: bind: Address already in use
解决步骤
①找到该进程;
找到redis-server 的进程 (Process Status)
输入命令:
$ ps -ef | grep -i redis
root 3086 1 0 Apr24 ? 00:00:07 ./bin/redis-server *:6379
root 3531 3467 0 01:00 pts/0 00:00:00 grep -i redis
进程号为 3086 即为redis服务器
②杀死该进程;
使用kill 命令
kill -9 3086
③然后重新启动redis服务器。
输入命令:
redis-server
3、 使用celery+redis,当redis连接需要密码
当使用redis做broker,redis连接需要密码时:
BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0',
其中xxxxx是密码,密码前必须加冒号。