Redis 和 Gopher 协议

Redis Gopher 协议实现

** 注意:Redis 7.0 中已移除对 Gopher 的支持 **

Redis 包含 Gopher 协议的实现,如 RFC 1436 中所述。

Gopher 协议在 90 年代末非常流行。它是 Web 的替代方案,服务器端和客户端端的实现都非常简单,以至于 Redis 服务器只需要 100 行代码就能实现这种支持。

现在您如何使用 Gopher?好吧,Gopher 从未真正消失,最近出现了一种趋势,即让仅由纯文本文档组成的层次结构内容恢复 Gopher。有些人希望互联网更简单,另一些人认为主流互联网变得过于受控,创建一个人们想要获得新鲜空气的替代空间很酷。

无论如何,为了庆祝 Redis 的 10 周年诞辰,我们把它作为礼物送给了 Gopher 协议。

工作原理

Redis Gopher 支持使用 Redis 的内联协议,特别是两种本来是非法的内联请求:空请求或任何以“/”开头的请求(没有 Redis 命令以这样的斜杠开头)。正常的 RESP2/RESP3 请求完全不受 Gopher 协议实现的影响,并且像往常一样得到服务。

如果您在启用 Gopher 时打开与 Redis 的连接并向其发送类似于“/foo”的字符串,如果存在名为“/foo”的键,则将通过 Gopher 协议提供该键。

为了创建一个真正的 Gopher "洞"(在 Gopher 语言中,Gopher 站点的名称),您可能需要使用像 https://github.com/antirez/gopher2redis 中的脚本。

安全警告

如果您计划将 Redis 放置在互联网上公开可访问的地址以服务 Gopher 页面,请务必为实例设置密码。设置密码后

  1. Gopher 服务器(启用后,默认情况下不会启用)将通过 Gopher 协议提供内容。
  2. 但是,在客户端身份验证之前,无法调用其他命令。

因此,请使用 requirepass 选项来保护您的实例。

要启用 Gopher 支持,请使用以下配置行。

gopher-enabled yes

访问不是字符串或不存在的键将在 Gopher 协议格式中生成错误。

RATE THIS PAGE
Back to top ↑