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 24 Redis
浅谈Redis在直播场景的实践方案
Apr 27 Redis
Redis 配置文件重要属性的具体使用
May 20 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
浅谈Redis中的RDB快照
Jun 29 Redis
浅谈Redis位图(Bitmap)及Redis二进制中的问题
Jul 15 Redis
Redis入门教程详解
Aug 30 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
redis数据结构之压缩列表
Mar 21 Redis
Redis分布式锁的7种实现
Apr 01 Redis
基于Redis6.2.6版本部署Redis Cluster集群的问题
Apr 01 Redis
windows安装 redis 6.2.6最新步骤详解
Apr 26 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下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python实现飞机大战项目
2020/03/11 Python
python如何实现图片压缩
2020/09/11 Python
软件测试英文面试题
2012/10/14 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
党员批评与自我批评发言稿
2014/10/14 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL