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 sentinel 频繁主备切换的问题
Apr 12 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
基于Redis位图实现用户签到功能
May 08 Redis
解析高可用Redis服务架构分析与搭建方案
Jun 20 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
Redis RDB技术底层原理详解
Sep 04 Redis
Springboot/Springcloud项目集成redis进行存取的过程解析
Dec 04 Redis
redis的list数据类型相关命令介绍及使用
Jan 18 Redis
Redis高并发缓存架构性能优化
May 15 Redis
Redis特殊数据类型bitmap位图
Jun 01 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 Redis
Redis实战之Lettuce的使用技巧详解
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
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
js DOM的学习笔记
2011/12/22 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python中rb含义理解
2020/06/18 Python
银行实习人员自我鉴定
2013/09/22 职场文书
会计自我鉴定
2013/11/02 职场文书
数学检讨书1000字
2014/02/24 职场文书
食品安全工作实施方案
2014/03/26 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
申报材料格式
2014/12/30 职场文书
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS