Ubuntu 安装 Redis
<p>本文档记录使用 Ubuntu 安装一个生产可用的 Redis 实例。</p><table>
<thead>
<tr>
<th></th>
<th>版本</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ubuntu</td>
<td>Ubuntu 22.04.1 LTS</td>
</tr>
<tr>
<td>Redis</td>
<td>7.0.7</td>
</tr>
</tbody>
</table>
<ol>
<li>如果你正在运行一个非常小的发行版(比如 Docker 容器),你可能需要先安装 lsdb -release:</li>
</ol>
<pre><code class="language-bash">$ sudo apt-get install lsb-release
</code></pre>
<ol start="2">
<li>将存储库添加到 apt 索引,更新它,然后安装:</li>
</ol>
<pre><code class="language-bash">$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ echo "deb https://packages.redis.io/deb $(lsb_release -cs) main" | $ $ sudo tee /etc/apt/sources.list.d/redis.list
$ sudo apt-get update
$ sudo apt-get install redis
</code></pre>
<ol start="3">
<li>创建 redis-server 和 redis-cli 的软链接到 /usr/local/bin:</li>
</ol>
<pre><code class="language-bash">$ sudo ln -s /bin/redis-server /usr/local/bin/redis-server
$ sudo ln -s /bin/redis-cli /usr/local/bin/redis-server
</code></pre>
<ol start="4">
<li>创建一个目录来存储 Redis 配置文件和数据:</li>
</ol>
<pre><code class="language-bash">$ sudo mkdir /etc/redis
$ sudo mkdir /var/redis
</code></pre>
<ol start="5">
<li>将 Redis 发行版中 utils 目录下的 init 脚本复制到 /etc/init.d。 建议使用您正在运行 Redis 实例的端口的名称来调用它。例如:</li>
</ol>
<pre><code class="language-bash">$ sudo cp utils/redis_init_script /etc/init.d/redis_6379
</code></pre>
<p>编辑初始化脚本:</p>
<pre><code class="language-bash">$ sudo vi /etc/init.d/redis_6379
</code></pre>
<p>请确保根据您正在使用的端口修改 REDISPORT。pid 文件的路径和配置文件的名称都依赖于端口号。</p>
<ol start="6">
<li>将 /etc/redis/redis.conf(如果不存在,可以在 Redis 发行版的根目录下找到)复制一份副本,使用端口号作为名称,例如:</li>
</ol>
<pre><code class="language-bash">$ sudo cp /etc/redis/redis.conf /etc/redis/6379.conf
</code></pre>
<ol start="7">
<li>在 /var/redis 中创建一个目录,作为 Redis 实例的数据和工作目录:</li>
</ol>
<pre><code class="language-bash">$ sudo mkdir /var/redis/6379
</code></pre>
<ol start="8">
<li>编辑配置文件,确保执行以下更改:</li>
</ol>
<ul>
<li>将 <strong>daemonize</strong> 设置为 yes(默认设置为 no)。</li>
<li>将 <strong>pidfile</strong> 设置为 /var/run/redis_6379.Pid(如果需要修改端口)。</li>
<li>请相应地更改 <strong>port</strong>。在我们的示例中,不需要更改它,因为默认端口已经是 6379。</li>
<li>设置您喜欢的 <strong>loglevel</strong>。</li>
<li>设置 <strong>logfile</strong> 为 /var/log/redis_6379.log</li>
<li>将 <strong>dir</strong> 设置为 /var/redis/6379(非常重要的一步!)</li>
</ul>
<ol start="9">
<li>最后,使用以下命令将新的 Redis init 脚本添加到所有默认运行级别:</li>
</ol>
<pre><code class="language-bash">$ sudo update-rc.d redis_6379 defaults
</code></pre>
<p>完成!现在你可以尝试运行你的实例:</p>
<pre><code class="language-bash">$ sudo /etc/init.d/redis_6379 start
</code></pre>
<p>确保一切都按预期工作:</p>
<ul>
<li>尝试用 redis-cli ping 你的实例。</li>
<li>使用 redis-cli save 进行测试保存,并检查转储文件是否正确存储到 /var/redis/6379/(您应该会找到一个名为 dump.rdb 的文件)。</li>
<li>检查您的 Redis 实例是否正确地在日志文件中记录。</li>
<li>重启你的电脑,确保重启后 Redis 能够自启动。</li>
</ul>
<h1 id="保护-redis">保护 Redis</h1>
<p>默认情况下,没有任何身份验证。如果你的环境与外部互联网隔离,这是没有问题的。然而,如果一个未经保护的 Redis 暴露在互联网上,这是一个很大的安全问题。如果你不是 100% 确定你的环境是安全的,请检查以下步骤,以使 Redis 更安全。</p>
<ol>
<li>确保 Redis 用来监听连接的端口(默认为6379,如果你在集群模式下运行 Redis,另外还有 16379,外加 26379)是受防火墙保护的,这样就不可能从外部连接 Redis。</li>
<li>修改配置文件中的 <strong>bind</strong> 参数,以保证 Redis 只监听你正在使用的网络接口。例如,如果您只是从同一台计算机本地访问 Redis,则只能使用回环地址(127.0.0.1),等等。</li>
<li>使用 <strong>requirepass</strong> 参数来添加额外的安全防护,以便客户端需要使用 AUTH 命令进行身份验证。</li>
</ol>
<p>注意,在没有任何安全措施的情况下,将 Redis 实例暴露在互联网上是非常容易被利用的,所以请确保您理解上述内容并至少应用防火墙层。安装防火墙后,尝试从外部主机连接 redis-cli,以证明实例实际上不可访问。</p>
<h1 id="使用-cli-探索-redis">使用 CLI 探索 Redis</h1>
<p>外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 通信。该协议在 Redis 客户端库中针对不同的编程语言实现。然而,为了使操作 Redis 更简单,Redis 提供了一个命令行实用程序,可以用来发送命令到 Redis。这个程序被称为 redis-cli。</p>
<p>为了检查 Redis 是否正常工作,首先要做的是使用 redis-cli 发送 PING 命令:</p>
<pre><code class="language-bash">$ redis-cli ping
PONG
</code></pre>
<p>运行 redis-cli,后跟命令名及其参数,将该命令发送到本地主机上端口 6379 的 Redis 实例。您可以更改 redis-cli 使用的主机和端口——只需尝试 <code>--help</code> 选项来检查使用信息。</p>
<p>另一种有趣的运行 redis-cli 的方式是不带参数:程序将以交互模式启动。您可以键入不同的命令并查看它们的回复。</p>
<pre><code class="language-bash">$ 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"
</code></pre><br><br>
来源:https://www.cnblogs.com/zn-pi/p/17029785.html
頁:
[1]