开始使用Redis
如何使用Redis启动和运行
这是 Redis 入门指南。您将学习如何安装、运行和试验 Redis 服务器进程。
安装Redis
你如何安装Redis取决于你的操作系统,以及你是否愿意与Redis Stack和Redis UI捆绑安装。请看下面最适合你需要的指南:
一旦你的Redis启动并运行,并且可以使用redis-cli
连接,你就可以继续下面的步骤。
使用CLI探索Redis
外部程序使用TCP套接字和Redis特定协议与Redis对话。这个协议是在不同编程语言的Redis客户端库中实现的。然而,为了让Redis更加简单,Redis提供了一个命令行工具,可以用来向Redis发送命令。这个程序被称为redis-cli。
为了检查Redis是否正常工作,首先要做的是使用redis-cli发送一个PING命令:
$ redis-cli ping
PONG
运行redis-cli,后面跟一个命令名称及其参数,将把这个命令发送到运行在6379端口的localhost的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对话。现在是暂停一下本教程的时候了,开始Redis的数据类型教程,以便学习一些Redis命令。否则,如果你已经知道一些基本的Redis命令,你可以继续阅读。
保护 Redis
默认情况下,Redis 绑定了所有接口,并且完全没有认证。如果你在一个非常受控制的环境中使用Redis,与外部互联网隔开,一般来说,远离攻击者,这很好。然而,如果一个未经加固的Redis暴露在互联网上,这就是一个很大的安全问题。如果你不能100%确定你的环境是安全的,请检查以下步骤,以使Redis更加安全,这些步骤是按照提高安全性的顺序列出的。
- 确保 Redis 用于侦听连接的端口(默认情况下为 6379,如果您在集群模式下运行 Redis,则为 16379,对于 Sentinel 则为 26379)被防火墙保护,这样就无法从外界联系 Redis。
- 使用设置
bind
指令的配置文件,以保证Redis只监听你正在使用的网络接口。例如,如果你只是从同一台计算机的本地访问Redis,那么只有环回接口(127.0.0.1),以此类推。 - 使用
requirepass
选项是为了增加一个额外的安全层,这样客户就需要使用AUTH
命令进行验证。 - 如果您的环境需要加密,请使用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 次更改,则至少需要五分钟),因此,如果您希望数据库在重启后持久保存并重新加载,请确保每次要强制执行数据集快照时手动调用SAVE 命令。否则请确保使用SHUTDOWN命令关闭数据库:
$ redis-cli shutdown
这样,Redis将确保在退出前将数据保存在磁盘上。 强烈建议阅读持久化页面,以便更好地了解Redis持久化的工作方式。
更加正确地安装Redis
从命令行运行 Redis 只是为了破解或开发。然而,在某些时候,您将有一些实际的应用程序要在真实的服务器上运行。对于这种用法,您有两种不同的选择:
- 使用屏幕运行Redis。
- 使用 init 脚本以正确的方式在 Linux 机器中安装 Redis,以便在重新启动后一切都将重新正常启动。
强烈建议使用init脚本进行正确的安装。 以下说明可用于在基于Debian或Ubuntu的发行版中使用Redis 2.4版或更高版本的init脚本进行正确的安装。
我们假设你已经在/usr/local/bin下复制了redis-server和redis-cli的可执行文件。
-
创建一个目录,将你的Redis配置文件和你的数据存放在里面:
sudo mkdir /etc/redis sudo mkdir /var/redis
-
将Redis发行版中utils目录下的init脚本复制到
/etc/init.d
。我们建议用你运行这个Redis实例的端口名称来调用它。比如说:sudo cp utils/redis_init_script /etc/init.d/redis_6379
-
编辑init脚本。
sudo vi /etc/init.d/redis_6379
确保根据你使用的端口修改REDISPORT。 pid文件的路径和配置文件的名称都取决于端口号。
-
将你在Redis发行版根目录下找到的模板配置文件复制到
/etc/redis/
,使用端口号作为名称,例如:sudo cp redis.conf /etc/redis/6379.conf
-
在
/var/redis
内创建一个目录,该目录将作为该Redis实例的数据和工作目录:sudo mkdir /var/redis/6379
-
编辑配置文件,确保进行以下修改:
- 将daemonize设置为 "是"(默认情况下设置为 "否")。
- 将pidfile设为
/var/run/redis_6379.pid
(如果需要的话,修改端口)。 - 相应地改变port。在我们的例子中,不需要这样做,因为默认的端口已经是6379。
- 设置你喜欢的logle级别。
- 将logfile设为
/var/log/redis_6379.log
。 - 将dir设为
/var/redis/6379
(非常重要的一步!)。
-
最后使用以下命令将新的Redis init脚本添加到所有默认的运行级别中:
sudo update-rc.d redis_6379 defaults
你完成了!现在您可以尝试运行您的实例:
sudo /etc/init.d/redis_6379 start
确保一切都在按预期工作:
- 试着用 redis-cli 来 ping 你的实例吧。
- 用
redis-cli save
做一个测试性保存,并检查转储文件是否正确地存储到/var/redis/6379/
中(你应该找到一个名为dump.rdb
的文件)。 - 检查你的Redis实例是否正确地在日志文件中进行了记录。
- 如果是一台新的机器,你可以在没有问题的情况下进行尝试,确保在重新启动后,一切都仍然正常。
注意:上面的说明并不包括所有你可以改变的Redis配置参数,例如,使用AOF持久性而不是RDB持久性,或者设置复制,等等。 请确保阅读示例redis.conf
文件(该文件有大量注释)。