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通过6379端口无法连接服务器(redis-server.exe闪退)
May 08 Redis
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
Redis延迟队列和分布式延迟队列的简答实现
May 13 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
使用Redis实现实时排行榜功能
Jul 02 Redis
Redis 持久化 RDB 与 AOF的执行过程
Nov 07 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
Redis调用Lua脚本及使用场景快速掌握
Mar 16 Redis
Redis 哨兵机制及配置实现
Mar 25 Redis
redis lua限流算法实现示例
Jul 15 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
javascript ajax的5种状态介绍
2014/08/18 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
给排水专业应届生求职信
2013/10/12 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
租房合同协议书
2014/04/09 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
压缩Redis里的字符串大对象操作
2021/06/23 Redis
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android