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存储数据类型及存取值方法
May 08 Redis
Redis主从配置和底层实现原理解析(实战记录)
Jun 30 Redis
Redis如何实现分布式锁
Aug 23 Redis
聊聊redis-dump工具安装问题
Jan 18 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
Redis实战高并发之扣减库存项目
Apr 14 Redis
Redis实现一个账号只能登录一个设备
Apr 19 Redis
浅谈Redis缓冲区机制
Jun 05 Redis
Redis唯一ID生成器的实现
Jul 07 Redis
redis protocol通信协议及使用详解
Jul 15 Redis
Redis Lua脚本实现ip限流示例
Jul 15 Redis
python中使用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
PHP mkdir()定义和用法
2009/01/14 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
php删除指定目录的方法
2015/04/03 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python三方库之requests的快速上手
2019/03/04 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
几个Shell Script面试题
2014/04/18 面试题
大学生入党思想汇报
2014/01/01 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
争先创优个人总结
2015/03/04 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers