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方式
May 07 Redis
redis 限制内存使用大小的实现
May 08 Redis
redis实现排行榜功能
May 24 Redis
Redis高级数据类型Hyperloglog、Bitmap的使用
May 24 Redis
redis不能访问本机真实ip地址的解决方案
Jul 07 Redis
Redis集群的关闭与重启操作
Jul 07 Redis
浅谈Redis位图(Bitmap)及Redis二进制中的问题
Jul 15 Redis
redis数据一致性的实现示例
Mar 18 Redis
Redis超详细讲解高可用主从复制基础与哨兵模式方案
Apr 07 Redis
Redis基本数据类型Zset有序集合常用操作
Jun 01 Redis
Redis基本数据类型哈希Hash常用操作命令
Jun 01 Redis
python中使用redis用法详解
Dec 24 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
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
js实现扫雷源代码
2020/11/27 Javascript
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python2 对excel表格操作完整示例
2020/02/23 Python
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
Java面试题及答案
2012/09/08 面试题
施工资料员的岗位职责
2013/12/22 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
男女朋友协议书
2014/04/23 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
举起手来观后感
2015/06/09 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL