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 相关文章推荐
详解RedisTemplate下Redis分布式锁引发的系列问题
Apr 27 Redis
Windows中Redis安装配置流程并实现远程访问功能
Jun 07 Redis
redis cluster支持pipeline的实现思路
Jun 23 Redis
k8s部署redis cluster集群的实现
Jun 24 Redis
redis requires ruby version2.2.2的解决方案
Jul 15 Redis
Redis字典实现、Hash键冲突及渐进式rehash详解
Sep 04 Redis
redis中lua脚本使用教程
Nov 01 Redis
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 Redis
Redis分布式锁的7种实现
Apr 01 Redis
redis复制有可能碰到的问题汇总
Apr 03 Redis
windows安装 redis 6.2.6最新步骤详解
Apr 26 Redis
Redis实现订单过期删除的方法步骤
Jun 05 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判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP中的类型约束介绍
2015/05/11 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Python内置的字符串处理函数整理
2013/01/29 Python
Python进程间通信用法实例
2015/06/04 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
小结Python的反射机制
2020/09/28 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
家具厂厂长岗位职责
2014/01/01 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
大学生作弊检讨书
2014/09/11 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
python字典的元素访问实例详解
2021/07/21 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
JavaScript流程控制(分支)
2021/12/06 Javascript
Python学习之包与模块详解
2022/03/19 Python