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
深入浅析Redis 集群伸缩原理
May 15 Redis
redis实现的四种常见限流策略
Jun 18 Redis
在项目中使用redis做缓存的一些思路
Sep 14 Redis
Springboot/Springcloud项目集成redis进行存取的过程解析
Dec 04 Redis
Redis中有序集合的内部实现方式的详细介绍
Mar 16 Redis
redis数据一致性的实现示例
Mar 18 Redis
Redis分布式锁的7种实现
Apr 01 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
Redis数据同步之redis shake的实现方法
Apr 21 Redis
浅谈Redis变慢的原因及排查方法
Jun 21 Redis
一文教你快速生成MySQL数据库关系图
Jun 28 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php汉字转拼音的示例
2014/02/27 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP 中常量的知识整理
2017/04/14 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
ext实现完整的登录代码
2008/08/08 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
ES6 Set结构的应用实例分析
2019/06/26 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
python自动化测试之连接几组测试包实例
2014/09/28 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
python中操作文件的模块的方法总结
2021/02/04 Python
如何用Lucene索引数据库
2016/02/23 面试题
给男朋友的道歉信
2014/01/12 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
家长会主持词开场白
2015/05/29 职场文书
教师研修随笔感言
2015/11/18 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技