*Redis 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 "hole"(Gopher 用语中 Gopher 站点的名称),你可能需要一个脚本,比如 https://github.com/antirez/gopher2redis 中的那个。

*安全警告

如果你计划将 Redis 放在互联网上、在公开可访问的地址上提供 Gopher 页面,请务必设置密码。一旦设置了密码:

  1. Gopher 服务器(启用时,默认不启用)将通过 Gopher 提供内容。
  2. 但其他命令在客户端认证之前不能被调用。

所以使用 requirepass 选项来保护你的实例。

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

gopher-enabled yes

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