ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

beego Session redis存储以及是否阻塞

2020-12-20 15:32:28  阅读:163  来源: 互联网

标签:beego http Session GET redis MainController session


其实官网的讲解已经很详细了, 我这里只是演练一下,https://beego.me/docs/mvc/controller/session.md;分两部分1, 是redis session的使用,2是看看redis session 是否和其他语言一样 都阻塞

使用

1.首先需要在配置文件app.conf 启用session, 设置如下:sessionon = true
2在main.go 文件中最添加代码

beego.BConfig.WebConfig.Session.SessionProvider = "redis"
    beego.BConfig.WebConfig.Session.SessionProviderConfig = "127.0.0.1:6379"

当然要记得引用包 _ “github.com/astaxie/beego/session/redis”
我们在controller代码如下:

func (c *MainController) Get() {

    v := c.GetSession("asta")
    if v == nil {
        c.SetSession("asta", int(1))
        c.Data["num"] = 0
    } else {
        c.SetSession("asta", v.(int)+1)
        c.Data["num"] = v.(int)
    }
    c.TplName = "index.tpl"
}

访问页面如图, http返回中有cookie, 同时redis 也确实有该值

验证阻塞

修改controller文件 增加几个方法V2-V5 和V1的方法完全一样

添加路由配置router.go文件init方法

    beego.Router("/v1", &controllers.MainController{}, "GET:V1")
    beego.Router("/v2", &controllers.MainController{}, "GET:V2")
    beego.Router("/v3", &controllers.MainController{}, "GET:V3")
    beego.Router("/v4", &controllers.MainController{}, "GET:V4")
    beego.Router("/v5", &controllers.MainController{}, "GET:V5")

修改页面让它通过ajax访问接几个接口

<body>
    <div>{{.num}}</div>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <input type="button" value="ajax call" id="idajax"/>
  <script>
    $("#idajax").click(function(){
        $.get("http://localhost:8080/v1");
        $.get("http://localhost:8080/v2");
        $.get("http://localhost:8080/v3");
        $.get("http://localhost:8080/v4");
        $.get("http://localhost:8080/v5");
    });
  </script>
</body>

点击按钮 运行效果。从运行效果上看 并不像。net 那样有阻塞

 

 


当然没有阻塞也有一些问题, 比如v1读取session 然后保存session, 在保存前v2不仅读取了seeion 然后做了修改, 那么v1在保存的时候就会覆盖v2保存的session数据。

标签:beego,http,Session,GET,redis,MainController,session
来源: https://www.cnblogs.com/majiang/p/14163671.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有