10、Go Gin 连接Redis以及Cookie&Session
package main
import (
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis/v8"
"net/http"
)
var RedisClient *redis.Client
var Store sessions.CookieStore
func init() {
RedisClient = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // 默认没有密码,如果有则填写
DB: 0, // 默认数据库为0,可以不写
})
Store = cookie.NewStore([]byte("secret"))
}
func main() {
router := gin.Default()
// 使用session中间件
router.Use(sessions.Sessions("mysession", Store))
router.GET("/set", func(c *gin.Context) {
session := sessions.Default(c)
session.Set("key", "value")
session.Save()
c.JSON(http.StatusOK, gin.H{"message": "session set success"})
})
router.GET("/get", func(c *gin.Context) {
session := sessions.Default(c)
if session.Get("key") != nil {
c.JSON(http.StatusOK, gin.H{"message": session.Get("key")})
} else {
c.JSON(http.StatusOK, gin.H{"message": "key not found"})
}
})
router.Run(":8080")
}
这段代码首先导入了必要的包,并初始化了Redis客户端和session存储。然后,在Gin的路由中使用了session中间件,并展示了如何设置和获取session值。最后,启动服务器监听8080端口。这个例子展示了如何在Gin应用中集成Redis来存储session数据,并且如何使用cookie store来管理session的存储和传输。
评论已关闭