redis缓存存储Session原理机制


Posted in Redis onNovember 20, 2021

基于 Redis 存储 Session

如果我们想将 session 数据保存到 redis 中,只要将 session 的存储引擎改成 redis 即可。

使用 redis 作为存储引擎的例子:

首先安装 redis 存储引擎的包

go get github.com/gin-contrib/sessions/redis
// 初始化基于 redis 的存储引擎
// 参数说明: 
// 第 1 个参数 - redis 最大的空闲连接数 
// 第 2 个参数 - 数通信协议 tcp 或者 udp 
// 第 3 个参数 - redis 地址, 格式,host:port 
// 第 4 个参数 - redis 密码
// 第 5 个参数 - session 加密密钥
	store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
	r.Use(sessions.Sessions("mysession", store))

设置session过期时间

//配置session的过期时间
		session.Options(sessions.Options{MaxAge:3600*6 })//6小时=60*60*6

分布式获取Session:(redis)

redis缓存存储Session原理机制

查看当前的redis值:
keys *
set key vlaue 设置键值对
get key 查看值(加密)
package main
import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-contrib/sessions/redis"
	"github.com/gin-gonic/gin"
)
func main() {
	r := gin.Default() 
	//配置session的中间件
 	store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
	r.Use(sessions.Sessions("mysession", store)) 
	//initMiddleware:配置路由中间件
	r.GET("/", func(c *gin.Context) {
		//设置sessions
		session := sessions.Default(c)
		//配置session的过期时间
		session.Options(sessions.Options{MaxAge:3600*6 })//6小时=60*60*6
		session.Set("username", "成强")
		//保存sessions:给其他页面使用(必须调用)
		session.Save() 
		c.String(200, "gin首页")
	})
	r.GET("/news", func(c *gin.Context) {
		//获取sessions
		session := sessions.Default(c)
		username := session.Get("username") 
		c.String(200, "username=%v", username)
	})
}

 以上就是redis缓存存储Session原理机制的详细内容,更多关于redis存储Session的资料请关注三水点靠木其它相关文章!

Redis 相关文章推荐
redis 查看所有的key方式
May 07 Redis
Redis实现订单自动过期功能的示例代码
May 08 Redis
了解Redis常见应用场景
Jun 23 Redis
解析redis hash应用场景和常用命令
Aug 04 Redis
Redis Stream类型的使用详解
Nov 11 Redis
在Centos 8.0中安装Redis服务器的教程详解
Mar 21 Redis
使用Redis做预定库存缓存功能
Apr 02 Redis
 Redis 串行生成顺序编码的方法实现
Apr 03 Redis
redis 解决库存并发问题实现数量控制
Apr 08 Redis
Redis基本数据类型Set常用操作命令
Jun 01 Redis
Redis全局ID生成器的实现
Jun 05 Redis
Redis配置外网可访问(redis远程连接不上)的方法
Dec 24 Redis
CentOS8.4安装Redis6.2.6的详细过程
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 #Redis
Window server中安装Redis的超详细教程
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Redis Stream类型的使用详解
Redis 持久化 RDB 与 AOF的执行过程
Redis模仿手机验证码发送的实现示例
You might like
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
jQuery编写QQ简易聊天框
2020/08/27 jQuery
Python的requests网络编程包使用教程
2016/07/11 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
学校花圃的标语
2014/06/18 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
初中优秀学生评语
2014/12/29 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
python装饰器代码解析
2022/03/23 Python