Redis 和 Gopher 协议

Redis Gopher协议实现

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

Redis 包含了 Gopher 协议的实现,具体内容在 RFC 1436 中有所规定。

Gopher协议在90年代末非常流行。它是网络的一个替代方案,服务器和客户端的实现都非常简单,以至于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 ↑