从redis官网下载Linux redis4.0.9版本,我下载的redis-4.0.9.tar.gz(目前最新稳定版),下载到/usr/local/src目录,如果没有就mkdir创建一个.
下载链接:https://redis.io/download
http://download.redis.io/releases/redis-4.0.9.tar.gz
############ 开始 ###############
################################## 1.安装redis ######################################
将安装包下载到此目录
/usr/local/src
将redis安装到此目录
/usr/local/redis
安装过程指令如下:
mkdir /usr/local/redis cd /usr/local/src tar xzf redis-4.0.9.tar.gz ln -s redis-4.0.9 redis #建立一个链接 cd redis make PREFIX=/usr/local/redis install #安装到指定目录中
start
上面的最后一行,我们通过PREFIX指定了安装的目录。如果make失败,一般是你们系统中还未安装gcc,那么可以通过yum安装:
yum install gcc
安装完成后,继续执行make.
这里也可以执行更新yum
sudo yum update
end
在安装redis成功后,你将可以在/usr/local/redis看到一个bin的目录,里面包括了以下文件:
redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server
################################# 2.将redis做成一个服务并注册 ################################
1.复制脚本到/etc/rc.d/init.d目录
ps: /etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行
按以上步骤安装Redis时,其服务脚本位于:
/usr/local/src/redis/utils/redis_init_script
必须将其复制到/etc/rc.d/init.d的目录下:
cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis
将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。
如果这时添加注册服务:
chkconfig --add redis
将报以下错误:
redis服务不支持chkconfig
为此,我们需要更改redis脚本。
2.更改redis脚本
打开使用vi打开脚本,查看脚本信息:
vim /etc/rc.d/init.d/redis
看到的内容如下(下内容是更改好的信息):
1 #!/bin/sh 2 #chkconfig: 2345 80 90 3 # Simple Redis init.d script conceived to work on Linux systems 4 # as it does use of the /proc filesystem. 5 6 REDISPORT=6379 7 EXEC=/usr/local/redis/bin/redis-server 8 CLIEXEC=/usr/local/redis/bin/redis-cli 9 10 PIDFILE=/var/run/redis_${REDISPORT}.pid 11 CONF="/etc/redis/${REDISPORT}.conf" 12 13 case "$1" in 14 start) 15 if [ -f $PIDFILE ] 16 then 17 echo "$PIDFILE exists, process is already running or crashed" 18 else 19 echo "Starting Redis server..." 20 $EXEC $CONF & 21 fi 22 ;; 23 stop) 24 if [ ! -f $PIDFILE ] 25 then 26 echo "$PIDFILE does not exist, process is not running" 27 else 28 PID=$(cat $PIDFILE) 29 echo "Stopping ..." 30 $CLIEXEC -p $REDISPORT shutdown 31 while [ -x /proc/${PID} ] 32 do 33 echo "Waiting for Redis to shutdown ..." 34 sleep 1 35 done 36 echo "Redis stopped" 37 fi 38 ;; 39 *) 40 echo "Please use start or stop as first argument" 41 ;; 42 esac
和原配置文件相比(以下几处都要更改,特别是第一个#chkconfig,否则会导致无法添加配置):
1.需要添加第二行内容如以上脚本中第二行:
#chkconfig: 2345 80 90
2.原文件EXEC、CLIEXEC参数,也是有所更改。
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
3.redis开启的命令,以后台运行的方式执行。
$EXEC $CONF &
ps:注意后面的那个“&”,即是将服务转到后面运行的意思,否则启动服务时,Redis服务将
占据在前台,占用了主用户界面,造成其它的命令执行不了。
4.将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf
mkdir /etc/redis
cp /usr/local/src/redis/redis.conf /etc/redis/6379.conf
这样,redis服务脚本指定的CONF就存在了。默认情况下,Redis未启用认证,可以通过开启6379.conf的requirepass 指定一个验证密码。
以上操作完成后,即可注册yedis服务:
chkconfig --add redis
3.启动redis服务
service redis start
######################## 3.将Redis的命令所在目录添加到环境变量PATH中 ##############################
修改profile文件:
vi /etc/profile
在最后行追加:
export PATH="$PATH:/usr/local/redis/bi
应用这个文件
. /etc/profile
#################################### 4.设置redis密码 #########################################
打开配置文件:# vi /etc/redis/6379.conf
vi /etc/redis/6379.conf
进入命令模式查找"requirepass"字符串,找到这一段,去掉前面的#号,后面密码就自定义了(此处修改为-Tq8UA7zredis)
1 # Warning: since Redis is pretty fast an outside user can try up to 2 # 150k passwords per second against a good box. This means that you should 3 # use a very strong password otherwise it will be very easy to break. 4 # 5 requirepass -Tq8UA7zredis 6 7 8 # Command renaming. 9 # 10 # It is possible to change the name of dangerous commands in a shared 11 # environment. For instance the CONFIG command may be renamed into something 12 # hard to guess so that it will still be available for internal-use tools 13 # but not available for general clients.
要使配置生效可以重启一下
##################################### 5.安装完成,进入redis ####################################
这样就可以直接调用redis-cli的命令了,如下所示:
redis-cli redis 127.0.0.1:6379> auth -Tq8UA7zredis OK redis 127.0.0.1:6379>
PS:可能需要防火墙将6379端口打开外部就能访问了
解决问题redis问题:ERR Client sent AUTH, but no password is set
明明在redis.conf中设置了密码,而且redis还启动了,为什么说没有密码呢?
大家都知道linux下启动redis有很多种方法,
其中有 ./redis-server &
这种方法启动,不会带上你的redis.conf配置文件启动
还有 ./redis-server ../redis.conf
这种方法启动的时候,会去带上配置文件redis.conf
上面的问题 ERR Client sent AUTH, but no password is set 。我遇到过一次,原因是我大意了,我用了第一种方式启动
这个时候redis是没有密码的,但是我的redis配置文件中配置了密码,所以当我在set值的时候就报这个错误了。
所以如果你配置了redis.conf这个文件,那么启动redis的时候也一定要带上这个文件启动。
那么解决问题就要先退出来
cd /usr/local/redis/bin
service redis stop
./redis-server
-bash: ./redis-server: 没有那个文件或目录 ,
经过搜索:
find / -name redis-server
/usr/local/redis/bin/redis-server
原来是能在当前bin的目录下才能执脚本文件
cd /usr/local/redis/bin/
再次执行
成功显示Redis信息