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持久化与主从复制的实践
Apr 27 Redis
浅谈redis缓存在项目中的使用
May 20 Redis
你真的了解redis为什么要提供pipeline功能
Jun 22 Redis
了解Redis常见应用场景
Jun 23 Redis
为什么RedisCluster设计成16384个槽
Sep 25 Redis
关于SpringBoot 使用 Redis 分布式锁解决并发问题
Nov 17 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
分布式Redis Cluster集群搭建与Redis基本用法
Feb 24 Redis
Redis调用Lua脚本及使用场景快速掌握
Mar 16 Redis
Redis监控工具RedisInsight安装与使用
Mar 21 Redis
muduo TcpServer模块源码分析
Apr 26 Redis
浅谈Redis的事件驱动模型
May 30 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代码优化及php相关问题总结
2006/10/09 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JS的数组迭代方法
2015/02/05 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
python二分法实现实例
2013/11/21 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python如何实现内容写在图片上
2018/03/23 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
python字符串判断密码强弱
2020/03/18 Python
python之语音识别speech模块
2020/09/09 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
美国性感女装网站:bebe
2017/03/04 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
行政人员岗位职责
2013/12/08 职场文书
总裁助理岗位职责
2014/02/17 职场文书
公司营业员的自我评价
2014/03/04 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
2014年副班长工作总结
2014/12/10 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
小学校本教研总结
2015/08/13 职场文书
党校培训学习心得体会
2016/01/06 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android