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延迟队列和分布式延迟队列的简答实现
May 13 Redis
Windows下redis下载、redis安装及使用教程
Jun 02 Redis
redis cluster支持pipeline的实现思路
Jun 23 Redis
Jedis操作Redis实现模拟验证码发送功能
Sep 25 Redis
浅谈Redis的keys命令到底有多慢
Oct 05 Redis
浅谈Redis的事件驱动模型
May 30 Redis
Redis特殊数据类型bitmap位图
Jun 01 Redis
关于Redis的主从复制及哨兵问题
Jun 16 Redis
使用Redis实现分布式锁的方法
Jun 16 Redis
Redis主从复制操作和配置详情
Sep 23 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/01/28 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
php计算整个目录大小的方法
2015/06/01 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python线程之定位与销毁的实现
2019/02/17 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
HTTP状态码详解
2021/03/18 杂记
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
银行领导证婚词
2014/01/11 职场文书
期末自我鉴定
2014/02/02 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
单位单身证明样本
2014/10/11 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
React如何创建组件
2021/06/27 Javascript
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis