Redis开发与运维. 1.5 正确安装并启动Redis

1.5 正确安装并启动Redis

通常来说,学习一门技术最好的方法就是实战,所以在学习Redis这样一个实战中产生的技术时,首先把它安装部署起来,值得庆幸的是,相比于很多软件和工具部署步骤繁杂,Redis的安装不得不说是非常简单,本节我们将学习如何安装Redis。

在写本书时,Redis 4.0已经发布RC版,但是大部分公司还都在使用3.0或更早的版本(2.6或2.8),本书所讲的内容基于Redis 3.0。

1.5.1 安装Redis

1.?在Linux上安装Redis

Redis能够兼容绝大部分的POSIX系统,例如Linux、OS X、OpenBSD、NetBSD和FreeBSD,其中比较典型的是Linux操作系统(例如CentOS、Redhat、Ubuntu、Debian、OS X等)。在Linux安装软件通常有两种方法,第一种是通过各个操作系统的软件管理软件进行安装,例如CentOS有yum管理工具,Ubuntu有apt。但是由于Redis的更新速度相对较快,而这些管理工具不一定能更新到最新的版本,同时前面提到Redis的安装本身不是很复杂,所以一般推荐使用第二种方式:源码的方式进行安装,整个安装只需以下六步即可完成,以3.0.7版本为例:

$ wget
http://download.redis.io/releases/redis-3.0.7.tar.gz

$ tar xzf redis-3.0.7.tar.gz

$ ln -s redis-3.0.7 redis

$ cd redis

$ make

$ make install

1)下载Redis指定版本的源码压缩包到当前目录。

2)解压缩Redis源码压缩包。

3)建立一个redis目录的软连接,指向redis-3.0.7。

4)进入redis目录。

5)编译(编译之前确保操作系统已经安装gcc)。

6)安装。

这里有两点要注意:第一,第3步中建立了一个redis目录的软链接,这样做是为了不把redis目录固定在指定版本上,有利于Redis未来版本升级,算是安装软件的一种好习惯。第二,第6步中的安装是将Redis的相关运行文件放到/usr/local/bin/下,这样就可以在任意目录下执行Redis的命令。例如安装后,可以在任何目录执行redis-cli –v查看Redis的版本。

$ redis-cli -v

redis-cli 3.0.7

第12章将介绍更多Linux配置优化技巧,为Redis的良好运行保驾护航。

2.?在Windows上安装Redis

Redis的官方并不支持微软的Windows操作系统,但是Redis作为一款优秀的开源技术吸引到了微软公司的注意,微软公司的开源技术组在GitHub上维护一个Redis的分支:https://github.com/MSOpenTech/redis。

那为什么Redis的作者没有开发和维护针对Windows用户的Redis版本呢?这里可以简单分析一下:首先Redis的许多特性都是和操作系统相关的,Windows操作系统和Linux操作系统有很大的不同,所以会增加维护成本,而且更重要的是大部分公司都在使用Linux操作系统,而Redis在Linux操作系统上的表现已经得到了实践的验证。对于使用Windows操作系统的读者,可以通过安装虚拟机来体验Redis的诸多特性。

对Windows版本的Redis感兴趣的读者,可以尝试安装和部署Windows版本的Redis,但是本书中的知识和例子不能确保在Windows下能够运行。

1.5.2 配置、启动、操作、关闭Redis

Redis安装之后,src和/usr/local/bin目录下多了几个以redis开头可执行文件,我们称之为Redis
Shell,这些可执行文件可以做很多事情,例如可以启动和停止Redis、可以检测和修复Redis的持久化文件,还可以检测Redis的性能。表1-2中分别列出这些可执行文件的说明。

表1-2 Redis可执行文件说明

 可执行文件  作  用

redis-server     启动Redis

redis-cli    Redis命令行客户端

redis-benchmark      Redis基准测试工具

redis-check-aof         Redis AOF持久化文件检测和修复工具

redis-check-dump    Redis RDB持久化文件检测和修复工具

redis-sentinel  启动Redis Sentinel

 

Redis持久化和Redis Sentinel分别在第5章和第9章才会涉及,Redis基准测试将在第3章介绍,所以本节只对redis-server、redis-cli进行介绍。

1.?启动Redis

有三种方法启动Redis:默认配置、运行配置、配置文件启动。

(1)默认配置

这种方法会使用Redis的默认配置来启动,下面就是redis-server执行后输出的相关日志:

$ redis-server

12040:C 11 Jun 17:28:39.464 # Warning: no
config file specified, using the

 
default config. In order to specify a config file use ./redis-server
/path/

 
to/redis.conf

                _._                                                 

          
_.-``__ ''-._                                            

     
_.-``    `.  `_. 
''-._           Redis 3.0.7
(00000000/0) 64 bit

 
.-`` .-```.  ```\/    _.,_ ''-._                                  

 (   
'      ,       .-` 
| `,    )     Running in standalone mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379

 |   
`-._   `._    /    
_.-'    |     PID: 12040

 
`-._    `-._  `-./ 
_.-'    _.-'                                  

 |`-._`-._   
`-.__.-'    _.-'_.-'|                                 

 |   
`-._`-._        _.-'_.-'    |          
http:// redis.io       

 
`-._    `-._`-.__.-'_.-'    _.-'                                  

 |`-._`-._   
`-.__.-'    _.-'_.-'|                                 

 |   
`-._`-._        _.-'_.-'    |                                 

 
`-._    `-._`-.__.-'_.-'    _.-'                                   

     
`-._    `-.__.-'    _.-'                                      

         
`-._        _.-'                                          

              `-.__.-'                                              

12040:M 11 Jun 17:28:39.470 # Server
started, Redis version 3.0.7

12040:M 11 Jun 17:28:39.470 * The server is
now ready to accept connections on

 
port 6379

可以看到直接使用redis-server启动Redis后,会打印出一些日志,通过日志可以看到一些信息,上例中可以看到:

当前的Redis版本的是3.0.7。

Redis的默认端口是6379。

Redis建议要使用配置文件来启动。

因为直接启动无法自定义配置,所以这种方式是不会在生产环境中使用的。

(2)运行启动

redis-server加上要修改配置名和值(可以是多对),没有设置的配置将使用默认配置:

# redis-server --configKey1 configValue1
--configKey2 configValue2

例如,如果要用6380作为端口启动Redis,那么可以执行:

# redis-server --port 6380

虽然运行配置可以自定义配置,但是如果需要修改的配置较多或者希望将配置保存到文件中,不建议使用这种方式。

(3)配置文件启动

将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf中,那么只需要执行如下命令即可启动Redis:

# redis-server /opt/redis/redis.conf

Redis有60多个配置,这里只给出一些重要的配置(参见表1-3),其他配置会随着不断深入学习进行介绍,第14章会将所有的配置说明进行汇总。

表1-3 Redis的基础配置

配置名     配置说明

port 端口

logfile       日志文件

dir    Redis工作目录(存放持久化文件和日志文件)

daemonize       是否以守护进程的方式启动Redis

 

Redis目录下都会有一个redis.conf配置文件,里面就是Redis的默认配置,通常来讲我们会在一台机器上启动多个Redis,并且将配置集中管理在指定目录下,而且配置不是完全手写的,而是将redis.conf作为模板进行修改。

显然通过配置文件启动的方式提供了更大的灵活性,所以大部分生产环境会使用这种方式启动Redis。

2.?Redis命令行客户端

现在我们已经启动了Redis服务,下面将介绍如何使用redis-cli连接、操作Redis服务。redis-cli可以使用两种方式连接Redis服务器。

第一种是交互式方式:通过redis-cli -h {host} -p {port}的方式连接到Redis服务,之后所有的操作都是通过交互的方式实现,不需要再执行redis-cli了,例如:

redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> set hello world

OK

127.0.0.1:6379> get hello

"world"

第二种是命令方式:用redis-cli -h ip {host} -p {port} {command}就可以直接得到命令的返回结果,例如:

redis-cli -h 127.0.0.1 -p 6379 get hello

"world"

这里有两点要注意:1)如果没有-h参数,那么默认连接127.0.0.1;如果没有-p,那么默认6379端口,也就是说如果-h和-p都没写就是连接127.0.0.1:6379这个Redis实例。2)redis-cli是学习Redis的重要工具,后面的很多章节都是用它做讲解,同时redis-cli还提供了很多有价值的参数,可以帮助解决很多问题,有关于redis-cli的强大功能将在第3章进行详细介绍。

3.?停止Redis服务

Redis提供了shutdown命令来停止Redis服务,例如要停掉127.0.0.1上6379端口上的Redis服务,可以执行如下操作。

$ redis-cli shutdown

可以看到Redis的日志输出如下:

# User requested shutdown...         #客户端发出的shutdown命令

* Saving the final RDB snapshot before
exiting.

#保存RDB持久化文件(有关Redis持久化的特性在1.2节已经进行了简单的介绍,RDB是Redis的一种

 持久化方式)

* DB saved on disk            #将RDB文件保存在磁盘上

# Redis is now ready to exit, bye bye...   #关闭

当使用redis-cli再次连接该Redis服务时,看到Redis已经“失联”。

$ redis-cli

Could not connect to Redis at 127.0.0.1:6379:
Connection refused

这里有三点需要注意一下:

1)Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅的关闭方式。

2)除了可以通过shutdown命令关闭Redis服务以外,还可以通过kill进程号的方式关闭掉Redis,但是不要粗暴地使用kill
-9 强制杀死Redis服务,不但不会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造成AOF和复制丢失数据的情况。

3)shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:

redis-cli shutdown nosave|save

时间: 2024-10-28 12:22:37

Redis开发与运维. 1.5 正确安装并启动Redis的相关文章

Redis开发与运维. 导读

数据库技术丛书 Redis开发与运维 付磊 张翼军编著   Redis作为基于键值对的NoSQL数据库,具有高性能.丰富的数据结构.持久化.高可用.分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用.掌握Redis已经逐步成为开发和运维人员的必备技能之一. 本书关注了Redis开发运维的方方面面,尤其对于开发运维中如何提高效率.减少可能遇到的问题进行详细分析,但本书不单单介绍怎么解决这些问题,而是通过对Redis重要原理的解析,帮助开发运维人员学会找到问题的方法,以及理解背后

Redis开发与运维. 3.2 Redis Shell

3.2 Redis Shell Redis提供了redis-cli.redis-server.redis-benchmark等Shell工具.它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题. 3.2.1 redis-cli详解 第1章曾介绍过redis-cli,包括-h.-p参数,但是除了这些参数,还有很多有用的参数,要了解redis-cli的全部参数,可以执行redis-cli -help命令来进行查看,下面将对一些重要参数的含义以及使用场景进行说明. 1.?-r -r(

Redis开发与运维. 3.4 事务与Lua

3.4 事务与Lua 为了保证多条命令组合的原子性,Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题.本节首先简单介绍Redis中事务的使用方法以及它的局限性,之后重点介绍Lua语言的基本使用方法,以及如何将Redis和Lua脚本进行集成,最后给出Redis管理Lua脚本的相关命令. 3.4.1 事务 熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行.例如在社交网站上用户A关注了用户B,那么需要在用户A的关注表中加入用户B,并且在用

Redis开发与运维. 2.1 预备

2.1 预备 在正式介绍5种数据结构之前,了解一下Redis的一些全局命令.数据结构和内部编码.单线程命令处理机制是十分有必要的,它们能为后面内容的学习打下一个好的基础,主要体现在两个方面:第一.Redis的命令有上百个,如果纯靠死记硬背比较困难,但是如果理解Redis的一些机制,会发现这些命令有很强的通用性.第二.Redis不是万金油,有些数据结构和命令必须在特定场景下使用,一旦使用不当可能对Redis本身或者应用本身造成致命伤害. 2.1.1 全局命令 Redis有5种数据结构,它们是键值对

Redis开发与运维. 2.7 键管理

2.7 键管理 本节将按照单个键.遍历键.数据库管理三个维度对一些通用命令进行介绍. 2.7.1 单个键管理 针对单个键的命令,前面几节已经介绍过一部分了,例如type.del.object.exists.expire等,下面将介绍剩余的几个重要命令. 1.?键重命名 rename key newkey 例如现有一个键值对,键为python,值为jedis: 127.0.0.1:6379> get python "jedis" 下面操作将键python重命名为java: 127.

Redis开发与运维. 1.1 盛赞Redis

1.1 盛赞Redis Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串).hash(哈希).list(列表).set(集合).zset(有序集合).Bitmaps(位图).HyperLogLog.GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人.不仅如此,Redis还可以将内存的数据利用快照和日志

Redis开发与运维. 1.2 Redis特性

1.2 Redis特性 Redis之所以受到如此多公司的青睐,必然有之过人之处,下面是关于Redis的8个重要特性. 1.?速度快 正常情况下,Redis执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能,但这里先不讨论机器性能上的差异,只分析一下是什么造就了Redis除此之快的速度,可以大致归纳为以下四点: Redis的所有数据都是存放在内存中的,表1-1是谷歌公司2009年给出的各层级硬件执行速度,所以把数据放在内存中是Redis速度快的最主要原因.

Redis开发与运维. 1.6 Redis重大版本

1.6 Redis重大版本 Redis借鉴了Linux操作系统对于版本号的命名规则:版本号第二位如果是奇数,则为非稳定版本(例如2.7.2.9.3.1),如果是偶数,则为稳定版本(例如2.6.2.8.3.0.3.2).当前奇数版本就是下一个稳定版本的开发版本,例如2.9版本是3.0版本的开发版本.所以我们在生产环境通常选取偶数版本的Redis,如果对于某些新的特性想提前了解和使用,可以选择最新的奇数版本. 介绍一门技术的版本是很多技术图书的必备内容,通常读者容易忽略,但随着你对这门技术深入学习后

Redis开发与运维. 2.2 字符串

2.2 字符串 字符串类型是Redis最基础的数据结构.首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习奠定基础.如图2-7所示,字符串类型的值实际可以是字符串(简单的字符串.复杂的字符串(例如JSON.XML)).数字(整数.浮点数),甚至是二进制(图片.音频.视频),但是值最大不能超过512MB.   图2-7 字符串数据结构 2.2.1 命令 字符串类型的命令比较多,本小节将按照常用和不常用两个维度进行说明,但是这里常用和不常