hello, 今天学习过程中需要使用redis,在使用过程中遇到了一些问题,在这里记录下,也希望给遇到相同问题的人一点帮助, ok开始描述今天遇到的问题和解决办法。

首页redis在linux的安装,请参考网站:点击打开链接 

http://www.redis.net.cn/tutorial/3503.html 这个是网站上安装的版本过于老旧,目前最新版是Redis 4.0.6,而我安装的是3.2.8。因为我早就安装了redis,刚好要用,我就没有再去安装最新版。

$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make

启动什么的上面给出的网站有讲过,我就不再赘述了,我要说些网站上没有的东西,一般启动我们会以配置文件(redis.conf)的方式来启动, make之后在redis-3.2.8文件夹下会产生redis.conf文件,这里有几个参数需要说明下

1、daemonize no:  Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程。

2、port 6379 : 这个我就是端口号,如果不想用默认的可以修改这个参数

3、bind 127.0.0.1: 绑定ip 127.0.0.1 只能本机访问,数据库来说至少公司内网都应该可能访问的,我改为0.0.0.0 表示所有网段都可以访问

4、requirepass 123456:  设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

更多参数请参考redis社区文档:点击打开链接

如果我没猜错的话,现在你应该已经启动了redis-server ,那么想再次启动你要怎么做呢?  redis-server restart? 哈哈哈,我这样试了下。

好吧,严肃点,redis提供了服务器命令,向下面这样,先关闭在重新启动

[root@localhost src]# redis-cli  #开始客户端连接
127.0.0.1:6379> auth 123456 #auth 密码登录
OK
127.0.0.1:6379> shutdown save    #shutdown 关闭服务  save
not connected> exit              # not connected 表示连接已经失去, exit 退出
[root@localhost src]# 
[root@loca [root@localhost src]# ps -ef | grep redis-   # ps 查找进程 redis-server 真的关闭了
root      2782  2508  0 05:57 pts/0    00:00:00 grep --color=auto redis-
[root@localhost src]# redis-server ../redis.conf  #重启

好的,如果只说到这里就太没意思了,我们介绍下 utils 下的install_server.sh 这个是启动redis系统服务的脚本,系统服务怎么理解呢? 果然你很懂操作系统自然明白,但是如果你不懂的话,看一下windows任务管理器的服务,这个服务是可以右键启动和关闭的,install_server.sh 就是在linux系统上创建这个任务,然后可以通过systemctl stop/start命令启动和关闭。

连接redis报断开的管道 redis总是断开连接_Redis

下面是执行脚本, 里面有几个需要说明的步骤,在脚本执行过程中会让你选择在启动端口,配置文件路径,log文件路径,和数据文件路径,port可以用默认的,也可以指定,配置文件路径就用你自己的文件路径就好。log和数据文件路径随意。

[root@localhost redis-3.2.8]# cd utils  
[root@localhost utils]# ls
build-static-symbols.tcl  hyperloglog            redis-sha1.rb
cluster_fail_time.tcl     install_server.sh      releasetools
corrupt_rdb.c             lru                    speed-regression.tcl
create-cluster            redis-copy.rb          whatisdoing.sh
generate-command-help.rb  redis_init_script
hashtable                 redis_init_script.tpl
[root@localhost utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] /opt/redis-3.2.8
Please select the redis log file name [/var/log/redis_6379.log] /opt/redis-3.2.8/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] /opt/redis-3.2.8/redis_data_6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /opt/redis-3.2.8
Log file       : /opt/redis-3.2.8/redis_6379.log
Data dir       : /opt/redis-3.2.8/redis_data_6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.ok^H
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
/var/run/redis_6379.pid exists, process is already running or crashed
Installation successful!
[root@localhost utils]#

如果你想知道这个脚本是如何创建系统服务的并且有shell能力的话,就可以读读install_server.sh这脚本

其中有一句 /etc/init.d/redis_$REDIS_PORT start || die "Failed starting service..."  这句会在/etc/init.d/这个目录下创建一个redis_加上端口号的文件,这里我用的6379, 所以他的文件名叫redis_6379, 如果你想修改什么的话,可以通过修改这个文件。因为我写错了配置文件的路径,导致启动时使用了默认密码,所以我去改了这个文件的Config file    : /opt/redis-3.2.8/redis.conf  ,然后重启启动服务

[root@localhost init.d]# systemctl daemon-reload   #文件发生了变化,需要重新加载
[root@localhost init.d]# systemctl start redis_6379  #重新启动,恢复密码验证,说明修改起了作用了                           [root@localhost redis-3.2.8]# ./src/redis-cli
127.0.0.1:6379> get keys
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379>
# install_server.sh 脚本内容
[root@localhost init.d]# vi redis_6379 
#!/bin/sh
#Configurations injected by install_server below....

EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli  
PIDFILE=/var/run/redis_6379.pid
CONF="/opt/redis-3.2.8"
REDISPORT="6379"
###############
# SysV Init Information
# chkconfig: - 58 74
# description: redis_6379 is the redis daemon.
### BEGIN INIT INFO
# Provides: redis_6379
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop redis_6379
# Description: Redis daemon
### END INIT INFO

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
            echo "$PIDFILE exists, process is already running or crashed"
        else
            echo "Starting Redis server..."
            $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, process is not running"
        else
            PID=$(cat $PIDFILE)
            echo "Stopping ..."
            $CLIEXEC -p $REDISPORT shutdown
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
        fi
        ;;
    status)
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
            echo 'Redis is not running'
        else
            echo "Redis is running ($PID)"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac

如果看客老爷看到了这里,那小的万分感谢,自己回头看了下,写的什么乱七八糟的东西。。哈哈哈,如果对你有那么一点帮助的话,请帮忙点个赞,留个言啥的,毕竟自己玩好无聊,如果没有任何帮助的,权当我自嗨了,有时候写点博客能让自己坐的住,安稳的研究下技术还是挺开心的。