02 Redis Getting started

内容纲要

Getting started with Redis

如何启动和运行Redis

这是一个开始使用Redis的指南。您将学习如何安装、运行和试验Redis服务器进程。

安装Redis

如何安装Redis取决于你的操作系统。下面的指南最适合您的需求:

Installing Redis

一旦你启动并运行了Redis,并且可以使用 Redis -cli 进行连接,你可以继续下面的步骤。

使用CLI探索Redis

外部程序使用TCP套接字和Redis特定协议与Redis进行通信。该协议在针对不同编程语言的Redis客户端库中实现。然而,为了使Redis黑客更简单,Redis提供了一个命令行实用程序,可以用来发送命令到Redis。这个程序叫做redis-cli。

为了检查Redis是否正常工作,首先要做的是使用 Redis -cli 发送一个PING命令:

$ redis-cli ping
PONG

运行Redis -cli,后跟命令名及其参数,将此命令发送到localhost端口6379上运行的Redis实例。

您可以更改redis-cli 所使用的主机和端口,只需尝试 --help选项来检查使用信息。

运行redis-cli的另一种有趣的方式是不带参数:程序将以交互模式启动。您可以键入不同的命令并查看它们的答复。

$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

此时,您可以与Redis对话。

Securing Redis

默认情况下,Redis绑定到所有接口,没有任何身份验证。如果你在一个非常受控制的环境中使用Redis,与外部互联网和攻击者分离,这是没问题的。然而,如果一个未加固的Redis暴露在互联网上,这是一个大的安全问题。如果您不能100%确定您的环境是否安全,请检查以下步骤,以使Redis更安全,它们是按安全性增加的顺序排列的。

  1. 确保Redis用来监听连接的端口(默认为6379,如果在集群模式下运行Redis,则为16379,如果在Sentinel模式下运行则为26379)是开启防火墙控制的,这样就不可能从外网联系Redis。
  2. 使用一个设置了bind指令的配置文件,以确保Redis只监听你正在使用的网络接口。
    例如,如果您只是从同一台计算机本地访问Redis,则只使用环回接口(127.0.0.1),等等。
  3. 使用requirepass选项可以添加额外的安全层,以便客户端需要使用AUTH命令进行身份验证。
  4. 如果您的环境需要加密,可以使用spiped或其他SSL隧道软件来加密Redis服务器和Redis客户端之间的流量。

注意,在没有任何安全措施的情况下暴露在互联网上的Redis实例非常容易被利用,因此确保您理解了上述内容,并至少应用了防火墙层。
在防火墙就绪后,尝试从外部主机连接redis-cli,以证明您自己的实例实际上不可访问。

从你的应用使用Redis

当然,仅仅从命令行界面使用Redis是不够的,因为目标是从您的应用程序使用它。为此,您需要下载并安装您的编程语言的Redis客户端库。您将在这个页面中找到针对不同语言的完整客户端列表

例如,如果你碰巧使用Ruby编程语言,我们最好的建议是使用Redis-rb客户端。你可以使用命令gem install redis来安装它。

这些指令是Ruby特有的,但实际上许多流行语言的库客户端看起来非常相似:创建Redis对象并执行调用方法的命令。

一个简短的使用Ruby的交互示例:

>> require 'rubygems'
=> false
>> require 'redis'
=> true
>> r = Redis.new
=> #<Redis client v4.5.1 for redis://127.0.0.1:6379/0>
>> r.ping
=> "PONG"
>> r.set('foo','bar')
=> "OK"
>> r.get('foo')
=> "bar"

Redis 持久化

你可以在这个页面上了解Redis持久性是如何工作的,但是要快速了解的重要一点是,默认情况下,如果你用默认配置启动Redis, Redis只会时不时地自动保存数据集(例如,如果你的数据至少有100个更改,至少在5分钟后)。所以如果你想让你的数据库持久,并在重启后重新加载,请确保每次你想强制快照数据集时手动调用SAVE命令。否则,请确保使用SHUTDOWN 命令关闭数据库:

$ redis-cli shutdown

通过这种方式,Redis将确保在退出前将数据保存在磁盘上。强烈建议阅读持久性页面,以便更好地理解Redis持久性是如何工作的。

正确安装Redis

从命令行运行Redis是很好的,只是为了有一点hack或为了开发。但是,在某个时候,您将在真正的服务器上运行一些实际的应用程序。对于这种用法,你有两种不同的选择:

  • 使用屏幕运行Redis。
  • 在您的Linux系统中使用初始化脚本以正确的方式安装Redis,以便重启后一切将重新正确启动。

强烈建议使用初始化脚本进行正确的安装。在基于Debian或Ubuntu的发行版中,可以使用Redis 2.4或更高版本附带的初始化脚本执行正确的安装。

我们假设您已经在/usr/local/bin下复制了redis-serverredis-cli可执行文件。

  • 创建一个目录来存储您的Redis配置文件和您的数据:

    sudo mkdir /etc/redis
    sudo mkdir /var/redis
  • 将在utils目录下的Redis发行版中找到的init初始化脚本复制到/etc/init.d。我们建议使用运行Redis机器的端口名称来调用它。例如:

    sudo cp utils/redis_init_script /etc/init.d/redis_6379
  • 编辑初始脚本

    sudo vi /etc/init.d/redis_6379

    请确保根据您正在使用的端口修改REDISPORT。pid文件路径和配置文件名都依赖于端口号。

  • 将Redis分发根目录下的模板配置文件复制到/etc/redis/,使用端口号作为名称,例如:

    sudo cp redis.conf /etc/redis/6379.conf

    在中创建一个目录,作为这个Redis实例的数据和工作目录:

  • /var/redis中创建一个目录,作为这个Redis实例的数据和工作目录:

    sudo mkdir /var/redis/6379
  • 编辑配置文件,确保执行以下修改:

    • daemonize设置为yes(默认设置为no)。
    • pidfile设置为/var/run/redis_6379.pid(如果需要修改端口)。
    • 相应修改port。在我们的示例中不需要它,因为默认端口已经是6379。
    • 设置首选的loglevel
    • 设置logfile/var/log/redis_6379.log
    • 设置dir/var/redis/6379(非常重要的一步!)
  • 最后,使用以下命令将新的Redis初始化脚本添加到所有默认运行级别:

    sudo update-rc.d redis_6379 defaults

做完了!现在你可以尝试运行你的Redis实例:

sudo /etc/init.d/redis_6379 start

确保每件事都按照预期进行:

  • 尝试用redis-cli来ping您的实例。
  • 使用redis-cli save进行测试保存,并检查转储文件是否正确存储到/var/redis/6379/(您应该找到一个名为dump.rdb的文件)。
  • 检查您的Redis实例是否在日志文件中正确地记录。
  • 如果这是一台新机器,你可以毫无问题地尝试它,确保重启后一切仍在工作。

注意:在上面的说明中,我们跳过了许多您想要更改的Redis配置参数,例如为了使用AOF持久性而不是RDB持久性,或者为了设置复制,等等。

确保阅读示例redis.conf文件(注释很多)和您可以在这个网站上找到的其他文档以获得更多信息。

高级软件工程师、高级大数据分析师、人工智能专家

1 Comment

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward