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 12 Redis
Windows下redis下载、redis安装及使用教程
Jun 02 Redis
详解Redis复制原理
Jun 04 Redis
Redis如何实现分布式锁
Aug 23 Redis
Redis入门教程详解
Aug 30 Redis
Redis 持久化 RDB 与 AOF的执行过程
Nov 07 Redis
Redis命令处理过程源码解析
Feb 12 Redis
Redis如何使用乐观锁(CAS)保证数据一致性
Mar 25 Redis
redis sentinel监控高可用集群实现的配置步骤
Apr 01 Redis
redis 解决库存并发问题实现数量控制
Apr 08 Redis
muduo TcpServer模块源码分析
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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
自定义百度分享的分享按钮
2015/03/18 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
flask应用部署到服务器的方法
2019/07/12 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
营销总经理的岗位职责
2013/12/15 职场文书
化学教师自荐信范文
2013/12/28 职场文书
2014年教务工作总结
2014/12/03 职场文书
个人承诺书格式范文
2015/04/29 职场文书
入党后的感想
2015/08/10 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书