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遍历所有key的两个命令(KEYS 和 SCAN)
Apr 12 Redis
浅谈redis缓存在项目中的使用
May 20 Redis
redis实现共同好友的思路详解
May 26 Redis
浅谈Redis的几个过期策略
May 27 Redis
浅谈Redis主从复制以及主从复制原理
May 29 Redis
Django使用redis配置缓存的方法
Jun 01 Redis
k8s部署redis cluster集群的实现
Jun 24 Redis
redis使用不当导致应用卡死bug的过程解析
Jul 01 Redis
使用Redis实现实时排行榜功能
Jul 02 Redis
Redis 彻底禁用RDB持久化操作
Jul 09 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
使用python绘制人人网好友关系图示例
2014/04/01 Python
python复制文件的方法实例详解
2015/05/22 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
pandas的qcut()方法详解
2019/07/06 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
python如何爬取网页中的文字
2020/07/28 Python
python高级特性简介
2020/08/13 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
员工工作表现评语
2014/04/26 职场文书
公司投资建议书
2014/05/16 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
教师求职简历自我评价
2015/03/10 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript