Redis简明教程

一、启动和停止Redis

1、Redis可执行文件说明:

redis-server:Redis服务器

redis-cli:Redis命令行客户端

redis-benchmark:Redis性能测试工具

redis-check-aof:AOF文件修复工具

redis-check-dump:RDB文件检查工具

如果在编译后执行了make install命令,这些程序会被复制到/usr/local/bin或者是/usr/local/redis/bin目录内。

1.1、启动Redis启动Redis有直接启动和通过初始化脚本启动两种方式,分别适用于开发环境和生产环境。

1.直接启动

直接运行redis-server即可启动redis,在/usr/local/redis/bin目录下执行./redis-server ./redis.conf,如果不加./redis.conf则不能后台启动redis,如果退出主界面,redis也自动停止。也可以通过加—port 参数自定义端口号。


2.通过初始化脚本启动Redis

可以使用初始化脚本使Redis随系统自动启动。在Redis的源码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件,内容如下:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

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
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

我们需要配置Redis的运行方式和持久化文件、日志文件的存储位置等:

(1)配置初始化脚本。首先将初始化脚本复制到/etc/init.d目录下,文件名为redis_端口号,这个端口号是需要Redis监听的端口号,客户端将通过这个端口连接Redis。然后修改脚本第6行的REDISPORT变量的值为相同的端口号。



(2)需要建立/etc/redis目录存放Redis的配置文件,/var/redis/端口号存放Redis的持久化文件。

(3)修改配置文件。将Redis的配置文件redis.conf复制到etc/redis目录中,以端口号命名(比如6379.conf),然后将

daemonize设置为yes:使Redis以守护进程模式运行

pidfile设置为/var/run/redis_端口号.pid:设置Redis的PID文件位置

port设置Redis监听的端口号

dir设置为/var/redis/端口号:设置持久化文件存放的位置

现在就可以使用/etc/init.d/redis_6379 start命令来启动Redis了,结果报了一个错“/var/run/redis_6379.pidexists, process is already running or crashed”

只是因为之前使用其他方式启动Redis生成了pid文件,直接删除这个文件再次尝试启动,又报了一个错:“/etc/init.d/redis_6379:行20: /usr/local/bin/redis-server: 没有那个文件或目录”,查看redis_6379这个redis初始化脚本文件,发现EXEC=/usr/local/bin/redis-server和CLIEXEC=/usr/local/bin/redis-cli,而实际的redis-server和redis-cli都是在/usr/local/redis/bin目录下的,所以修改这两个路径如下:

然后再次尝试启动Redis服务器,成功:


执行如下命令使redis随系统自动启动:

systemctl enableredis

1.2停止Redis

强行终止Redis进程可能会导致数据丢失,正确终止Redis的方式应该是向Redis发送SHUTDOWN命令,方法是:redis-cli SHUTDOWN

Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。

使用kill Redis进程的PID的方式也可以正常结束Redis,效果和发送SHUTDOWN命令相同。

1.3Redis命令行客户端

1.3.1发送命令

Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会收到PONG。如:


1.3.2命令回复

1.整数回复会以(integer)开头,并在后面跟着整数数据,比如返回当前数据库中键的数量的命令DBSIZE或是递增键值的INCR命令:


2.字符串回复以双引号包裹,当请求的键不存在时会返回(nil):


1.4Redis配置

可以在启动Redis时跟上配置文件的路径来启用配置文件中的配置:

/etc/init.d/redis_6379start /etc/redis/6379.conf

这样就避免了在启动时跟上一长串的配置命令

通过参数传递同名的配置选项会覆盖配置文件中相应的参数,就像下面这样:

/etc/init.d/redis_6379start /etc/redis/6379.conf --loglevel warning

在Redis运行时,可以通过CONFIG  SET命令在不重启Redis的情况下动态修改部分Redis配置:

CONFIG SETloglevel warning

并不是所有配置都可以通过CONFIG SET命令修改。可以通过CONFIG GET命令获取配置信息:

CONFIG GET loglevel


1.5多数据库

Redis是一个字典结构的存储服务器,一个Redis实例可以包含多个存储数据的字典,客户端可以指定将数据存储在哪个字典中,这就像关系数据库中可以创建多个数据库一样,每个字典就相当于一个独立的数据库。

每个字典对外都是以一个从0开始的递增数字命名,Redis默认支持16个数据库,可以通过配置参数databases来修改支持的数据库个数。客户端与Redis建立连接后会默认选择0号数据库,可以使用SELECT命令更换数据库,比如选择1号数据库

Redis不支持自定义数据库名字,我们必须自己记录哪些数据库存放了哪些数据,Redis也不支持为每个数据库单独设置访问密码,所以要么可以访问所有数据库,要么所有的都不可以访问。而且每个数据库不是完全隔离的,比如FLUSHALL命令可以清空Redis服务器上所有数据库的数据。所以Redis的数据库概念更像是命名空间,而不适合存储不同应用程序的数据,比如可以使用0号数据库存储某个应用生产环境的数据,使用1号数据库存储测试环境的数据,但不适合使用0号数据库存储A应用的数据而使用1号数据库存储B应用的数据。不同的应用应该使用不同的Redis实例存储数据。一个空Redis实例所占空间很小,所以不用担心多个Redis实例会占用很多内存空间。


猜你喜欢

转载自blog.csdn.net/dongyuxu342719/article/details/79902028