Redis Quick Start
概述
这是一篇给没有使用过Redis的用户的快速开始文档。阅读这篇文档给你以下的帮助:
- 通过下载和编译Redis去启动服务。
- 使用redis-cli去访问服务。
- 通过你的应用程序来使用Redis。
- 理解Redis是怎样持久化工作的。
- 更好的去安装Redis。
- 通过阅读其他资料进一步了解Redis。
安装Redis
推荐通过源码编译安装Redis,只需要GCC compiler and libc就可以工作,不需要其他的依赖。通过包管理器安装的Redis不是最新的版本。
你可以通过redis.io站点去下载最后的Redis版本,或者通过http://download.redis.io/redis-stable.tar.gz下载最新的稳定版本。
按照下面简单的步骤编译redis:
1 | wget http://download.redis.io/redis-stable.tar.gz |
你可以通过输入make test来构建测试,这是一个可选的步骤。编译后的src目录会出现不同的可执行文件:
- redis-server 服务本身.
- redis-sentinel 高可用工具 (监控和故障转移).
- redis-cli 命令行工具来连接Redis。
- redis-benchmark 用来检查Redis性能的工具。
- redis-check-aof and redis-check-dump 修复数据文件的工具。
复制Redis服务和命令行工具到适当的地方,手动执行以下命令:
1 | sudo cp src/redis-server /usr/local/bin/ |
或者使用 sudo make install.
启动Redis
下面的流程我们假设/usr/local/bin在你的PATH环境变量里,所以你在执行这些命令的时候不需要指定完整的路径。
启动Redis服务最简单的方式就是不带任何参数运行redis-server。
1 | $ redis-server |
上面的例子里面Redis没有带任何配置文件启动,所有的参数都将使用默认值。如果你启动Redis仅仅只是玩一玩或者作为开发使用,这样就已经可以了,但如果是生产环境的话你应该制定一个配置文件。
在启动Redis的时候使用完整路径携带一个配置文件并且作为第一个参数,像这样:redis-server /etc/redis.conf。你应该使用源码根目录下面的redis.conf作为一个模板来修改你的配置文件。
检查Redis是否在工作
外部程序与Redis交互使用的是TCP socket和一个具体的协议。这个协议根据不同的程序语言来实现。我们使用Redis提供的一个命令行工具来发送命令给Redis,这个工具叫Redis-cli。第一件事情就是发送一个PING命令来检查Redis是否在工作:
1 | $ redis-cli ping |
运行redis-cli命令将连接本地的6379端口并发送命令名称给服务器。你可以改变主机和端口,只需要输入–help选项就可以获取使用信息。
另一个有趣的方式是运行一个不带参数的redis-cli:这个程序将开启交互模式,你可以键入不同的命令来查看结果。
1 | $ redis-cli |
这样你就可以和Redis交互了。你可以花上15分钟时间来学习Redis的数据类型,如果你已经知道了这些命令的使用可以跳过阅读。
保护Redis
默认情况下Redis绑定所有的接口并且不需要认证。如果你的Redis是在一个可以控制的环境里面,受外界的攻击,这样就很好。但是如果Redis暴露在了互联网的话,这就是一个很大的安全问题。如果你不能够百分之百的确保你的环境被妥善的处理,请通过以下步骤检查安全性。
- 确保Redis连接端口(默认是6379,如果你运行Redis是在集群模式下使用的是16379,Sentinel模式是26379)是在防火墙后面,所以外网是不能够连接进来的。
- 修改配置文件里面的bind指令,只设置成你使用的网络接口,比如设置成回环接口(127.0.0.1)就只能允许同一台机子访问Redis,等等。
- 使用requirepass选项添加一层额外的安全保护,客户端就必须通过AUTH命令来认证。
- 如果你的环境必须要加密处理的话,就使用spiped或者其他的SSL软件来加密服务器和客户端之间的传输。
Redis在没有任何安全保护的情况下暴露在外网是很容易做到的,所以你要确保至少有一个保护层,可以尝试在防火墙中和外部通过redis-cli去连接服务来证明你的安全性。
在你的应用程序里面使用Redis
通过使用Redis的命令行工具还不够,我们想通过程序来交互,你需要下载你的程序语言对应的客户端库,你可以在这里找到不同语言对应的客户端库信息。
如果你恰好使用的是Ruby语言开发的程序,我们建议使用Redis-rb client。你可以使用命令gem install redis去安装redis。
这些指令是在Ruby环境下的,但其他语言的库看起来都差不多:创建一个Redis对象并且执行命令,一个简单的Ruby例子:
1 | >> require 'rubygems' |
Redis持久化
你可以学习 how Redis persistence works on this page, 然而我们要理解默认启动, 如果你使用的是默认配置启动的Redis,Redis 会自动的保存数据集(例如5分钟后,或者至少有100次的修改),如果你想你的数据库持久化并且在重启后重新加载数据, 就需要手动调用SAVE命令强制设置一个数据快照,否则请使用SHUTDOWN命令来关掉数据库:
1 | $ redis-cli shutdown |
这种方式Redis将在退出之前将数据保存到磁盘。强烈建议阅读持久化工作
更好的安装Redis
通过命令行运行Redis仅仅是在开发环境。然而,你的实际程序是运行在一个真实的服务器上。你有两种不同的选择:
- 使用screen运行Redis。
- 使用初始化脚本来启动Redis,在重启后会重新开始。
建议使用初始化脚本来安装,我们假设已经复制了redis-server和redis-cli到/usr/local/bin目录下面。
- 创建一个目录来存储你的Redis配置和你的数据:
1 | sudo mkdir /etc/redis |
- 在utils目录下面找到初始化脚本复制到/etc/init.d目录中,例如:
1 | sudo cp utils/redis_init_script /etc/init.d/redis_6379 |
- 编辑初始化脚本。
1 | sudo vi /etc/init.d/redis_6379 |
确保修改的redis端口关联到你使用的端口。pid文件和配置文件都依赖这个端口。
- 在你的根目录下面复制模板配置文件到/etc/redis下面,使用端口命名文件:
1 | sudo cp redis.conf /etc/redis/6379.conf |
- 在/var/redis/里面创建一个目录作为数据和工作的目录:
1 | sudo mkdir /var/redis/6379 |
编辑配置文件,确保执行了以下更改:
设置daemonize为yes(默认是no)
设置pidfile路径为/var/run/redis_6379.pid(修改端口时需要设置)
修改端口,在我们的例子里面使用的是默认端口6379.
设置你的日志级别loglevel。
设置logfile路径为/var/log/redis_6379.log
设置dir数据目录为 /var/redis/6379 (非常重要的一步!)
最后修改初始化脚本文件的运行级别,ubuntu执行以下命令:
1 | sudo update-rc.d redis_6379 defaults |
centos执行以下命令,文件开头添加chkconfig:
1 | vim /etc/init.d/redis_6379 |
你可以尝试运行你的实例:
1 | sudo /etc/init.d/redis_6379 start |
确保按照预期的执行:
- 尝试使用redis-cli去ping你的实例。
- 使用redis-cli save命令测试保存并且检查dump文件是否保存到了/var/redis/6379(你应该会找到一个dump.rdb文件)。
- 检查你的redis实例是否正确的记录了日志。
- 如果它是一台新的机器,你可以在没有问题的情况下尝试它,确保重启后一切仍在工作。
注意:我们在这个例子里面跳过了很多配置参数,务必阅读例子中的redis.conf文件,你也可以在这个网站的其他文档上找到更多的信息。