Redis入门指南之二(安装及配置)

本节主要内容
html

1. 前言
2. redis安装
3. 启动和中止Redisredis

1. 前言数据库

        安装Redis须要知道本身须要哪一个版本,有针对性的安装,好比若是须要redis GEO这个地理集合的特性,那么redis版本就不能低于3.2版本,因为这个特性是3.2版本才有的。另外须要注意的是,Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.8版、3.0版),奇数版本是非稳定版(如2.7版、2.9版),生产环境下通常须要使用稳定版本。centos

2. redis安装缓存

[root@centos home]# cd /home [root@centos home]# mkdir redis [root@centos home]# cd redis [root@centos redis]# wget http://download.redis.io/releases/redis-4.0.2.tar.gz
[root@centos redis]# cd redis-4.0.2 [root@centos redis-4.0.2]# make [root@centos redis-4.0.2]# make insatll

也能够指定安装目录:make install PREFIX=安装目录,默认安装到 /usr/local/bin 下(如果经过make install PREFIX=安装目录, 完成安装的,会在安装目录下生成一个bin目录,bin目录下也包含以下可执行文件)服务器

 

 

 

 

 

其中:ide

redis-benchmark :用于测试redis的性能。 redis-check-aof : 当aof备份文件被损坏,可经过该工具对aof文件进行修复,使用方式:redis-check-aof –fix 要修复的aof文件。 redis-check-rdb : 修复损坏的rdb备份文件。 redis-cli : redis客户端,用于链接服务端。 redis-server : redis服务器端,用于启动redis服务器。 redis-sentinel : 哨兵模式(实际使用较多) 在master-slave模式下(slave默认不支持写),当master出现异常时,自动在slave中选择一台做为master。 链接上redis服务器后,可经过指令“info”查看redis服务器信息,也可查看服务器知道内容信息,例如:info replication 查看主从相关信息

3. 启动和中止Redis工具

(1)启动redis性能

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

     A:直接启动

     直接启动redis-server便可启动Redis,十分简单。

[root@centos redis-4.0.2]# redis-server

     Redis服务器默认会使用6379端口,能够经过--port参数能够自定义端口号(本文使用默认的端口号):

[root@centos redis-4.0.2]# redis-server --port 6380

     B:经过初始化脚本启动Redis

      在Linux系统中能够经过初始化脚本启动Redis,使得Redis能随系统自动运行,在生产环境中推荐使用此方法运行Reids,这里以Centos6.0为例。

      在Redis源代码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件。咱们须要配置Redis的运行方式和持久化文件、日志文件的存储位置。步骤以下:

    1)配置初始化脚本

     首先将初始化脚本复制到/etc/init.d 目录中,文件名为 redis_端口号,其中端口号表示要让Redis监听的端口号,客户端经过该端口链接Redis。而后修改脚本第6行的REDISPORT变量的值为一样的端口号。

     2)创建须要的文件夹

须要创建的目录及说明

     3)修改配置文件

      首先将配置文件模板(redis-4.0.2/redis.conf)复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),而后按照下表对其中的部分参数进行编辑。

须要修改的配置文件及说明

      如今也可使用下面的命令来启动和关闭Redis了:

[root@centos redis-4.0.2]# /etc/init.d/redis_6379 start [root@centos redis-4.0.2]# /etc/init.d/redis_6379 stop

     让Redis随系统自动启动,这还须要对Redis初始化脚本(/etc/init.d/redis_6379)进行简单修改,执行命令:

# chkconfig: 2345 90 10 # description: Redis is a persistent key-value database

    设置开机执行redis脚本:

chkconfig redis_6379 on

     重启机器以后检查redis进程发现以启动:

     通过上面的部署操做后,系统重启,Redis也会随着系统自动启动,而且上面的步骤里也配置了Redis持久化,下次启动系统或Redis时,有缓存数据不丢失的好处。

     后面能够方便使用下面命令启停Redis:

[root@centos redis-4.0.2]# /etc/init.d/redis_6379 start [root@centos redis-4.0.2]# /etc/init.d/redis_6379 stop

分析启动脚本/etc/init.d/redis_6379: 

 1 #!/bin/sh  2 #  3 # Simple Redis init.d script conceived to work on Linux systems  4 # as it does use of the /proc filesystem.  5 #chkconfig: 2345 90 10
 6 #description: Redis is a persistent key-value database  7 
 8 REDISPORT=6379
 9 EXEC=/usr/local/bin/redis-server 10 CLIEXEC=/usr/local/bin/redis-cli 11 
12 PIDFILE=/var/run/redis_${REDISPORT}.pid 13 CONF="/etc/redis/${REDISPORT}.conf"
14 
15 case "$1" in
16  start) 17         if [ -f $PIDFILE ] 18  then 19                 echo "$PIDFILE exists, process is already running or crashed"
20         else
21                 echo "Starting Redis server..."
22  $EXEC $CONF 23  fi 24  ;; 25  stop) 26         if [ ! -f $PIDFILE ] 27  then 28                 echo "$PIDFILE does not exist, process is not running"
29         else
30                 PID=$(cat $PIDFILE) 31                 echo "Stopping ..."
32                 $CLIEXEC -p $REDISPORT shutdown 33                 while [ -x /proc/${PID} ] 34                 do
35                     echo "Waiting for Redis to shutdown ..."
36                     sleep 1
37  done 38                 echo "Redis stopped"
39  fi 40  ;; 41     *) 42         echo "Please use start or stop as first argument"
43  ;; 44 esac
redis启动脚本

启动顺序:

        首先判断是启动仍是中止,以启动为例,1. 检查是否存在redis的进程文件/var/run/redis_6379.pid,若是存在则打印一条日志信息。2.若是redis没有启动首先打印一条启动信息,而后执行/usr/local/bin/redis-server  /etc/redis/${REDISPORT}.conf 命令启动redis。

      让redis之后台进程的形式运行,编辑conf配置文件,修改以下内容;

daemonize yes

(2)中止redis

     考虑到 Redis 有可能正在将内存中的数据同步到硬盘中,强行终止 Redis 进程可能会致使数据丢失。正确中止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

[root@centos ~]# redis-cli SHUTDOWN

      当Redis收到SHUTDOWN命令后,会先断开全部客户端链接,而后根据配置执行持久化,最后完成退出。
      Redis能够妥善处理 SIGTERM信号,因此使用 kill Redis 进程的 PID也能够正常结束Redis,效果与发送SHUTDOWN命令同样。

3. Redis命令行客户端

     上面使用的redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,后面操做Redis会使用该命令行工具。

     下面会介绍如何经过redis-cli向Redis发送命令,而且对Redis命令的返回值的不一样类型进行简单介绍。

   (1)发送命令

        经过redis-cli向Redis发送命令有两种方式,第一种方式是将命令做为redis-cli的参数执行,好比上面使用过的redis-cli SHUTDOWN。redis-cli 执行时会自动按照默认配置(服务器地址为127.0.0.1,端口号为6379)链接Redis,经过-h和-p参数能够自定义地址和端口号:

[root@centos ~]# redis-cli -h 127.0.0.1 -p 6379

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

[root@centos ~]# redis-cli PING PONG

        第二种方式是不附带参数运行redis-cli,这样会进入交互模式,能够自由输入命令,如:

[root@centos ~]# redis-cli 127.0.0.1:6379> PING PONG 127.0.0.1:6379> ECHO hi "hi"

   (2)命令返回值

        在大多数状况下,执行一条命令后咱们会关心命令的返回值。命令的返回值有5种类型,对于每种类型redis-cli的展示结果都不一样,下面说明:

        1)状态回复

         状态回复(status reply)是最简单的一种回复,好比向Redis发送SET命令设置某个键的值时,Redis会回复状态OK表示成功。前面执行PING命令回复PONG也是状态回复。状态回复直接显示状态信息,如:

127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> PING PONG 127.0.0.1:6379>

        2)错误回复

         当出现命令不存在或命令格式有错误等状况时Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如:

127.0.0.1:6379> ERRORCOMMAND (error) ERR unknown command 'ERRORCOMMAND'

         在2.8版本之后,部分错误信息会以具体的错误类型开头,这样在调试的时候能更容易直到遇到的是哪一种类型的错误。如:

127.0.0.1:6379> LPUSH key 1 (integer) 1
127.0.0.1:6379> GET key (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379>

         上面错误信息开头“WRONGTYPE”就表示类型错误。

        3)整数回复

         Redis虽然没有整数类型,可是却提供了一些用于整数操做的命令,如递增键值的INCR命令会以整数的形式返回递增后的键值。整数回复(integer reply)以(integer)开头,并在后面跟上整数数据:

127.0.0.1:6379> INCR foo (integer) 1

        4)字符串回复

         字符串回复(bulk reply)是最多见的一种回复类型,当请求一个字符串类型的键的键值或一个其余类型键中的某个元素时会获得一个字符串回复。字符串回复以双引号包裹:

127.0.0.1:6379> GET foo "1"

         特殊状况是当请求的键值不存在时会获得一个空结果,显示(nil)。如:

127.0.0.1:6379> GET noexists (nil)

        5)字符串回复

         多行字符串回复(multi-bulk reply)一样很常见,如请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开通=头,如:

127.0.0.1:6379> KEYS *
1) "fo"
2) "num"
3) "key"
4) "foo"
5) "bar"
6) "name"

         KEYS命令的做用是获取数据库中符合指定规则的键名。

4. 配置

      前面经过redis-server的启动参数port设置了Redis的端口号,除此以外Redis还支持其余配置选项,如是否开启持久化、日志级别等。因为能够配置的选项较多,经过启动参数设置不方便,因此Redis支持经过配置文件来设置这些选项。启动配置文件的方法是在启动时将配置文件的路径做为启动参数传递给redis-server,如:

[root@centos ~]# redis-server /path/to/redis.conf

      经过启动参数传递同名的配置选项会覆盖文件 中相应的参数,如:

redis-server /path/to/redis.conf --loglevel warning

      Redis提供了一个配置模板redis.conf,位于源代码目录的根目录下。

      除此以外还能够在Redis运行时经过CONFIG SET命令在不重启Redis的状况下动态修改部分Redis配置。如:

[root@centos redis-4.0.2]# redis-cli 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel"
2) "notice"
127.0.0.1:6379> CONFIG SET loglevel warning OK

      并非全部的配置均可以使用CONFIG SET命令修改,能够查阅《Redis入门指南》附录B或者相关资料查询哪些参数可以使用该命令修改。同时可使用CONFIG GET命令得到Redis当前的配置状况。如:

127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel"
2) "warning"
127.0.0.1:6379>

第一行字符串回复表示的是选项名,第二行便是选项值。

5. 多数据库

     Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端能够指定将数据存储在哪一个字典中,这与关系型数据库实例中能够建立多个数据库相似,因此能够将其中的每一个字典理解成一个独立的数据库。

     每一个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库,能够经过配置参数database来修改这一数字。客户端与Redis创建链接后会自动选择0号数据库,能够经过SELECT 命令更换数据库,如要选择1号数据库:

127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]>
配置文件redis.conf中databases设置: # Set the number of databases. The default database is DB 0, you can select # a different one on a per-connection basis using SELECT <dbid> where # dbid is a number between 0 and 'databases'-1 databases 16

     然而这些以数字命名的数据库又与咱们理解的数据库有所区别。首先Redis不支持自定义数据库的名字,每一个数据库都以编号命名,开发者必须本身记录哪些数据库存储了哪些数据。另外Redis也不支持为每一个数据库设置不一样的访问密码,因此一个客户端要么能够访问所有数据库,要么连一个数据库也没有权限访问,最重要的一点是每一个数据库之间并非彻底隔离的,好比FLUSHALL命令能够清空一个Redis实例中全部数据库中的数据。

      综上所述,这些数据库更像是一种命名空间,而不适宜存储不一样应用程序的数据。好比能够用0号数据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据,但不宜使用0号数据库存储A应用的数据而使用1号数据库存储B应用的数据,不一样的应用应该使用不一样的Redis实例存储数据。因为Redis很是轻量级,一个空Redis实例占用的内存有1M左右,因此不用担忧多个Redis实例会额外占用不少的内存。

参考文献:

  • https://blog.csdn.net/lyw19930812/article/details/80607691
  • https://www.cnblogs.com/renzhicai/p/7773080.html
  • Redis入门指南(第二版)
相关文章
相关标签/搜索