redis 分布式会话

背景:

redis 广泛应用于缓存方向,也经常用来做分布式锁、访问量统计、分布式会话共享等;redis支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案。

默认情况下redis没有开启AOF (append only file)方式持久化,开启:appendonly yes
AOF持久化有三种方式appendfsync(always everysec no)一般使用everysec,redis的性能几乎不受影响。

分布式会话管理的常见解决方案有Session Stick,Session 复制, Session集中管理

(一)Session Stick
基本原理:确保每一次的请求都到同一台服务器上。常见通常在haproxy、nginx上设置ip_hash的负载均衡策略
(二)Session 复制
基本原理:每台应用服务器都会保存会话session数据,导致session数据变化就需要同步到所有的应用服务器,网络开销越来越大,应用服务器保存session的内存越来越大。
(三)Session集中管理
基本原理:增加一台服务器,专门用来管理session。
关键配置:
1. Redis过期健删除策略设置,redis过期健的删除主要采用惰性删除和定期删除策略,关键参数HZ(每秒刷新的频率)默认值是10,一般采用默认值,最大不超过100.
2. Redis maxmemory 和 maxmemory-policy进行设置。maxmemory一般为主机内存的1/2,maxmemory-policy是redis达到使用的最大物理内存后,采用的健值淘汰策略,默认策略为noeviction,内存满之后禁止写,建议设置成Volatile-lru,即超过最大内存后,要在过期健中使用lru算法进行key的剔除,保证不过期数据不被删除。
3. Min-slaves-to-write和min-slaves-max-lag(主从服务器之间数据不一致的最长时间,建议设置成10s).

Redis使用规范

key名设计:
1. 业务名/数据库名:表名:ID
2. 保持key的简介性,避免不可忽视的内存占用User:{uid}:friends:messages:{msgid}简化为u:{uid}🇫🇷m:{mid}。
3. 不要包含特殊字符
value:
1. 拒绝bigkey(防止网卡流量、慢查询)
2. 推荐选择适合的数据类型
3. 推荐控制key的生命周期

命令使用规范
1. 禁止生产环境使用keys、flushall、flushdb、monitor 等耗时命令,keys命令建议使用scan命令替代。
2. 合理使用select命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanghaoyuan.sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值