项目作者: rbcervilla

项目描述 :
A Gorilla Sessions Store implementation backed by Redis
高级语言: Go
项目地址: git://github.com/rbcervilla/redisstore.git
创建时间: 2019-09-16T18:03:57Z
项目社区:https://github.com/rbcervilla/redisstore

开源协议:MIT License

下载


RedisStore

A Gorilla Sessions Store implementation backed by Redis.

It uses go-redis as client to connect to Redis.

If you are using Redis 6 (client go-redis/v8), install redisstore/v8:

  1. go get github.com/rbcervilla/redisstore/v8

If you are using Redis 7 (client go-redis/v9), install redisstore/v9:

  1. go get github.com/rbcervilla/redisstore/v9

Example

  1. package main
  2. import (
  3. "context"
  4. "github.com/go-redis/redis/v9"
  5. "github.com/gorilla/sessions"
  6. "github.com/rbcervilla/redisstore/v9"
  7. "log"
  8. "net/http"
  9. "net/http/httptest"
  10. )
  11. func main() {
  12. client := redis.NewClient(&redis.Options{
  13. Addr: "localhost:6379",
  14. })
  15. // New default RedisStore
  16. store, err := redisstore.NewRedisStore(context.Background(), client)
  17. if err != nil {
  18. log.Fatal("failed to create redis store: ", err)
  19. }
  20. // Example changing configuration for sessions
  21. store.KeyPrefix("session_")
  22. store.Options(sessions.Options{
  23. Path: "/path",
  24. Domain: "example.com",
  25. MaxAge: 86400 * 60,
  26. })
  27. // Request y writer for testing
  28. req, _ := http.NewRequest("GET", "http://www.example.com", nil)
  29. w := httptest.NewRecorder()
  30. // Get session
  31. session, err := store.Get(req, "session-key")
  32. if err != nil {
  33. log.Fatal("failed getting session: ", err)
  34. }
  35. // Add a value
  36. session.Values["foo"] = "bar"
  37. // Save session
  38. if err = sessions.Save(req, w); err != nil {
  39. log.Fatal("failed saving session: ", err)
  40. }
  41. // Delete session (MaxAge <= 0)
  42. session.Options.MaxAge = -1
  43. if err = sessions.Save(req, w); err != nil {
  44. log.Fatal("failed deleting session: ", err)
  45. }
  46. }