<redis实战> 第二章

1.cookie缓存用户信息的两种方式

每当我们登录互联网服务时,这些服务会使用cookie记录我们的身份 .cookie由少量数据组成,网站会要求我们浏览器存储这些数据,并在每次服务发送请求时将这些数据返回给服务. 对于用来登录的cookie,有两种常用的方式可以将登录信息存储到cookie里面:一种是签名(sign)cookie,另一种是令牌(token)cookie

签名cookie通常会存储用户名,可能还有用户id,用户最后一次登录成功的时间,以及网站觉得有用的其他信息.除了用户的相关信息之外,签名cookie还包含一个签名,服务器可以使用这个签名来验证浏览器发送的信息是否未经改动(比如讲cookie中的用户名改成另外一个用户)

令牌cookie会在cookie中存储一串随机字节作为令牌,服务器可以根据令牌 在数据库中查找令牌拥有者. 随着时间的推移,旧令牌被新令牌代替

2.使用令牌cookie(sign)存储令牌信息

用户在购买商品前,会浏览不同的商品

使用散列存储登录cookie令牌和已登录用户之间的关系(映射).

<?php$redis = new Redis();
$redis->connect('127.0.0.1',6379);/*** 检查用户是否登录* @param $redis* @param $token* @return mixed*/
function check_token($redis,$token)
{//根据给定的令牌来查找与之对应的用户,并在用户已经登录的情况下返回用户的idreturn $redis->hget('login:',$token);
}$redis->zAdd($key,$score,$value);/*** 更新令牌* @param $redis* @param $token* @param $user* @param $item*/
function update_token($redis,$token,$user,$item)
{//用户每次浏览页面的时候,程序对存储在散列里面的信息进行更新,并将用户的令牌和当前时间戳添加到最近登录用户的有序集合里面$redis->hSet('login:',$token,$user);  //维持令牌与登录用户之间的(关系)映射$redis->zAdd('recent:',time(),$token);  //记录令牌最后一次出现的时间if ($item){$redis->zadd('viewd:'.$token,time(),$item);   //记录用户浏览过的商品$redis->zRemRangeByRank('viewed:'.$token,0,-26);  //移除旧的记录,只保留用户最近浏览过的25个商品}}//守护进程方式运行
//定时任务(cron)运行
/*** 定期清理旧的会话数据* @param $redis*/
function clean_sessions($redis)
{$quit = false;$limit = 1000000;while (!$quit){$size = $redis->zCard('recent:');  //找出当前已有令牌的数量if ($size < $limit)  // 令牌未超过限制,休眠并在之后重新检查{sleep(1);continue;}else{$quit = true;}}$end_index = min($size-$limit,100);$token = $redis->zRange('recent:',0,$end_index-1);  //获取需要移除令牌的idforeach ($token as $value){$session_key [] = $value['viewed:'.$token]; //给被删除的令牌构建键名}$redis->delete($session_key);$redis->del('login',$value);$redis->zrem('recent:',$value);  //移除最旧的令牌}

redis学习(四) 登录和cookie缓存相关推荐

  1. Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结

    前言 缓存是CPU的一部分,它存在于CPU中 CPU存取数据的速度非常的快,一秒钟能够存取.处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度 ...

  2. Redis学习总结(数据类型、持久化、事务、数据删除策略、主从复制、哨兵、缓存雪崩等)

    Redis学习总结 1.Redis是什么 1.概念 2.特点 3.应用场景 2.Linux环境安装redis 3.Redis的数据存储格式 1.String类型 1.String类型的常用操作 2.S ...

  3. Redis学习、缓存、持久化、哨兵模式

    个人博客欢迎访问 总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 我写代码是为了更好的表达自我,这是艺术创作,而不单单是为了把事情搞定. -Antirez ...

  4. Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩

    学习视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 完结撒花,感谢狂神 文章目录 1. NoSQL 1.1 单机Mysql的演进 1.2 当今企业架构 ...

  5. 顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了

    如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力.可以说,熟练使用 Redis ...

  6. 【Redis学习02】基于session和基于redis实现登录功能

    文章目录 前言 1. 基于session实现短信登录功能 1.1 发送短信验证码 1.2 短信验证登录 1.3 登录校验功能 2. 集群的Session问题 3. 基于redis实现共享session ...

  7. Redis学习总结(3)——Redis整合Spring结合使用缓存实例

    摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的方法切入到有需要进入缓存的类或方法前面. 一.Redis介绍 什么是Redis? redis是一个key- ...

  8. Redis(四)(主从复制-搭建环境测试,哨兵模式-测试,缓存穿透,缓存击穿,缓存雪崩)

    文章目录 1.主从复制 (1)为什么会有主从复制? (2)主从复制能干啥? (3)搭建一主二从环境 (4)测试 (5)复制原理 (6)使用层层链路型来进行连接 (7)主机宕机后手动配置主机 2.哨兵模 ...

  9. Redis(学习笔记)

    Redis学习笔记 1.NoSQL数据库 1.1解决的问题 1.1.1解决CPU及内存压力 1.1.2解决IO压力 1.2NoSQL数据库概述 1.2.1什么是NoSQL数据库 1.2.2适用与不适用 ...

最新文章

  1. LeetCode实战:两数相加
  2. 人工智能将为传统制造业带来什么?
  3. Spring @EventListener 异步中使用condition的问题
  4. python输入逗号分隔值文件_如何在Python(Pygame)中显示逗号分隔值(.txt)文件中的前10个高分...
  5. PG SQL数据库读写分离的思路
  6. 赵丽词汇速记5500幻星笔记 (0、1)
  7. PhotoShop的神奇(重新发表)
  8. Nginx 限制某 IP 在一段时间内对服务器发起请求的连接数
  9. 2021“数维杯”国际大学生数学建模竞赛A题思路
  10. mysql codesmith_CodeSmith连接不上MySQL的解决方法
  11. IOS下,利用捏合手势实现图像缩放和显示
  12. mysql foxpro,如何使用MySql同步Visual Foxpro dbfs?
  13. 【Mysql进阶-3】大量实例悟透EXPLAIN与慢查询
  14. matlab 眼镜蛇机动壁纸制作
  15. 从源码角度了解react工作原理
  16. 【JAVA】-JAVA简介
  17. 使用Tensorflow实现多GPU并行训练
  18. 电脑如何创建html文件夹,如何在电脑上创建自己的隐私文件夹
  19. KCP 协议与源码分析(一)
  20. Fortran学习笔记(5)

热门文章

  1. 南陵中学2021高考成绩查询,南陵中学2019高考成绩喜报、一本二本上线情况
  2. 单片机c语言 openssl,Linux下C语言使用openssl库进行加密
  3. python连接access 参数太少_带参数的PypyODBC:[ODBC Microsoft Access Driver]参数太少。预期4...
  4. mysql 123456_$myconn=mysql_connect(192.168.1.xxx,root,123456);怎么连不上数据库啊?
  5. ACL 2020 开源论文 | 基于Span Prediction的共指消解模型
  6. 基于DGCNN和概率图的轻量级信息抽取模型
  7. 15 篇最新 AI 论文来袭!NLP、CV...人人有份 | 本周值得读
  8. 本周 Github 精选:13 款炼丹利器,有开源工具包也有超大数据集
  9. 2017年度最值得读的AI论文评选 | 大张旗鼓送福利
  10. 来自闪闪宝石的光芒 - “宝石迷阵” x 信息检索 | 论文访谈间 #20