使用 Gorilla 会话自定义后端有什么优势?

2024-06-19

我想使用 Redis 进行会话管理。
但我不明白使用 Redis 作为 Gorilla 会话包的自定义后端比直接使用它有什么优势?

Gorilla 会话包的链接:http://www.gorillatoolkit.org/pkg/sessions http://www.gorillatoolkit.org/pkg/sessions


Gorilla 会话提供了一种连接存储系统以进行会话管理的方法,前提是您遵守所提供的界面。目前,他们为您提供了两个开箱即用的商店。一个是一个文件系统存储 https://github.com/gorilla/sessions/blob/master/store.go#L144它遵循仅在服务器文件系统上存储和检索基于会话的数据的接口。这CookieStore https://github.com/gorilla/sessions/blob/master/store.go#L52作为另一种选择,读取和写入浏览器内置 cookie 系统以使用另一种方式完成相同的操作。

Gorilla 会话实际上与 Redis 无关,但知道这一点,只要您构建一个遵循 Gorilla 会话的 RedisStore,您就可以轻松地在 Gorilla 中使用自己的会话存储商店界面 https://github.com/gorilla/sessions/blob/master/store.go#L21。这实际上完全取决于您的能力以及您在会话存储系统中寻找什么。 Gorilla 基本上为您提供了两个开箱即用的选项,以及一个提供适合您的应用程序的选项。

另外,如果您确实要构建一个可以与 Gorilla Sessions 一起使用的 RedisStore,请考虑将其开源,因为它将是 Go 社区的一个很好的补充。

您必须评估应用程序的需求和性能要求,以确定要使用哪个存储系统。为什么 Redis 可能有意义?好吧,如果您正在构建一个需要进行大量写入/修改的应用程序,并且这些数据需要保留,那么众所周知,只要您正确使用它,Redis 就可以帮助您扩展您的应用程序。如果您知道自己在做什么,Redis 支持的会话将会表现得非常好。

最后一点,如果您参与 Redis,请考虑使用这个精彩的 Go 包:Redigo https://github.com/garyburd/redigo作为您的 Redis 客户端库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gorilla 会话自定义后端有什么优势? 的相关文章

  • 递归追加到切片不起作用

    我正在尝试学习 Go 但我不明白为什么递归调用堆栈末尾的这段代码返回一个空切片 有帮助吗 还tmp甚至似乎没有在调试器中注册 func main input 3 int 4 6 7 expected 6 7 4 6 7 4 6 4 7 fm
  • 如何在 Go 中从 stdin 解析无限 json 数组?

    我正在尝试编写一个 i3status 的小替代品 一个与 i3bar 兼容的小程序进行通信this http i3wm org docs i3bar protocol html协议 他们通过标准输入和标准输出交换消息 两个方向的流都是一个无
  • 在 Django 中删除特定用户的所有会话的最优化方法?

    我正在运行 Django 1 3 使用会话中间件和身份验证中间件 settings py SESSION ENGINE django contrib sessions backends db Persist sessions to DB S
  • 如何在Go中将字节数组转换为字符串[重复]

    这个问题在这里已经有答案了 byte字符串会引发错误 string byte n 也会引发错误 顺便说一下 例如 文件名的 sha1 值是字符串 它是否明确需要 utf 8 或任何其他编码集 谢谢 我用来转换的最简单方法byte to st
  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 如何在Redis中存储聚合目录树搜索结果

    我有一个很大的产品目录树 目前包含约 36000 个类别和约 100 万个产品 即叶子 它的结构如下 最大深度为 5 Cat1 Cat11 Cat111 Cat1111 Product1 Cat1112 Product1 Cat1113 P
  • 在 Go 中调用外部命令

    如何在GO中调用外部命令 我需要调用外部程序并等待它完成执行 在执行下一条语句之前 您需要使用执行包 http golang org pkg os exec 使用启动命令Command http golang org pkg os exec
  • 与 StackExchange.Redis 并行执行?

    我有一个 100 万件商品的商店List
  • Golang 有 libfaketime 替代品吗?

    我想自动化一些测试 我必须操纵系统时间来检查用 golang 编写的程序的身份验证行为 根据这个帖子 https stackoverflow com questions 36024872 libfaketime doesnt work wi
  • 指针和切片引用类型 - 接收器

    我认为一旦向我提出这个问题就会有点明显 但现在以下内容还没有点击 type Stack interface func stack Stack Push x interface stack append stack x 我有一个名为 Stac
  • 在 Google App Engine Flex 上将 Websockets 与 Django 结合使用

    我目前正在尝试使用 django 框架和 django channels 设置 Google 应用程序引擎 Flex 对于我当前的项目 我需要一个 websocket 所以我尝试重建 Django channels 网站上提供的教程 htt
  • 如何在 Docker 容器中持久保存 go 1.11 模块?

    我正在将 Go 1 10 应用程序迁移到 Go 1 11 这还包括从dep https golang github io dep to mod https github com golang go wiki Modules用于管理依赖关系
  • Sidekiq 不处理队列

    有哪些可能的原因可以Sidekiq https github com mperham sidekiq阻止处理队列中的作业 队列已满 日志文件sidekiq log表示根本没有活动 因此队列已满但日志为空 并且 Sidekiq 似乎没有处理项
  • 如何将 json 字符串编组到 bson 文档以写入 MongoDB?

    我正在寻找的东西相当于文档 parse https api mongodb com java 3 2 org bson Document html parse java lang String 在golang中 这允许我直接从json创建b
  • 如何最大限度地减少 Go 中的垃圾收集?

    有时您可能想避免 最小化垃圾收集器 所以我想确定如何做到这一点 我认为下一个是正确的 在函数的开头声明变量 使用数组代替切片 还有吗 为了最大限度地减少 Go 中的垃圾收集 您必须最大限度地减少堆分配 为了最大限度地减少堆分配 您必须了解分
  • 从 alpine 容器执行“go get download”时,如何避免出现“x509:由未知机构签名的证书”?

    我正在尝试使用以下 Dockerfile 从头开始 构建 coredns FROM golang alpine SHELL bin sh ec RUN apk update apk add no cache git make ca cert
  • go install - 我需要手动更新我的路径吗?

    我对 Go 的最新最佳实践是什么有点困惑 在 macos 上安装最新的 1 17 Go 没有 GOPATH 环境变量 使用 go mod 我看到我的路径中有以下内容 usr local go bin 当我跑步时go install
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正
  • lua找不到模块插座

    我正在尝试使用 lua 从 nginx 访问 redis 值 当我在命令行上执行 lua 文件时 一切正常 我可以读取值并将值写入 redis 但是当我尝试通过访问写入 access by lua 指令的位置来从 nginx 执行相同的文件
  • StackExchange.Redis 事务方法冻结

    我有这段代码用于在 Stackexchange Redis 中添加对象和索引字段 事务冻结线程中的所有方法 Why var transaction Database CreateTransaction this line freeze th

随机推荐