Go Gin框架Session使用redis作为引擎 储存在redis中的数据怎样明文保存?

1、使用gin框架官方提供的:
https://github.com/gin-contri...

2、根据官方例子写出
image.png

3、查看redis
image.png

我想要保存redis明文数据,方便根据sessionId查看redis数据
请问怎样实现,请指导一下方向

尝试失败结果:
1、使用beego的session,但是需要启动beego才能实现
文档地址https://beego.vip/docs/mvc/co...
失败原因:
程序使用gin框架,所以启动beego的话,gin和beego不知道怎样互动,更不知道怎样搭配了。

正在尝试思路:
1、使用获取sessionId方法+单独用redis存,改为手动。

阅读 3.7k
2 个回答

这应该跟你的序列化方式有关,没用过go,不过正常来说框架都应该可以设置序列化方式,一般value都是使用json序列化

可以自定义编码解码方式

package main

import (
    "fmt"
    "github.com/boj/redistore"
    "github.com/gin-contrib/sessions"
    "github.com/gin-contrib/sessions/redis"
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
    err, rs := redis.GetRedisStore(store)
    if err != nil {
        return
    }
    // 设置自定义的编码解码方式
    rs.SetSerializer(redistore.JSONSerializer{})

    r.Use(sessions.Sessions("mysession", store))

    r.GET("/incr", func(c *gin.Context) {
        session := sessions.Default(c)
        var count float64
        v := session.Get("countcount")
        fmt.Println(v)
        if v == nil {
            count = 0
        } else {
            count = v.(float64)
            count++
        }
        session.Set("countcount", count)
        session.Save()
        c.JSON(200, gin.H{"count": count})
    })
    r.Run(":8000")
}

源码中是只要实现下面的接口

// SessionSerializer provides an interface hook for alternative serializers
type SessionSerializer interface {
    Deserialize(d []byte, ss *sessions.Session) error
    Serialize(ss *sessions.Session) ([]byte, error)
}
推荐问题
宣传栏