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 14 Redis
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
redis 限制内存使用大小的实现
May 08 Redis
深入浅析Redis 集群伸缩原理
May 15 Redis
redis cluster支持pipeline的实现思路
Jun 23 Redis
redis不能访问本机真实ip地址的解决方案
Jul 07 Redis
Redis 常见使用场景
Aug 30 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
Redis分布式锁的7种实现
Apr 01 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
Redis实现分布式锁的五种方法详解
Jun 14 Redis
利用Redis实现点赞功能的示例代码
Jun 28 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
第十四节--命名空间
2006/11/16 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
通过数据库向Django模型添加字段的示例
2015/07/21 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
某科技软件测试面试题
2013/05/19 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
英语分层教学实施方案
2014/06/15 职场文书
完整版商业计划书
2014/09/15 职场文书
教师节大会主持词
2015/07/06 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Golang 切片(Slice)实现增删改查
2022/04/22 Golang