Redis疑难问题解决方案与防范

Redis(补充) Redis面试题1.Redis为什么这么快?2. I/O多路复用是什么?3.Redis6.0中的多线程? 1.Redis为什么这么快? Redis是基于内存操作的,它的瓶颈在于机器的内存、网络带宽,而不是CPU 127.0.0.1:6379> set name hanser OK 127.0.0.1:6379> get name "hanser" 127.0.0.1:6379> unlink name # 这里是异步删除一个key,同步的话则是del name (integer) 1 阅读详情

应用场景

  1. 缓存
  2. 共享Session
  3. 消息队列系统
  4. 分布式锁

单线程的Redis为什么快

  1. 纯内存操作
  2. 单线程操作,避免了频繁的上下文切换
  3. 合理高效的数据结构
  4. 采用了非阻塞I/O多路复用机制(有一个文件描述符同时监听多个文件描述符是否有数据到来)

Redis 的数据结构及使用场景

  1. String字符串:字符串类型是 Redis 最基础的数据结构,首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,我们常使用的 set key value 命令就是字符串。常用在缓存、计数、共享Session、限速等。
  2. Hash哈希:在Redis中,哈希类型是指键值本身又是一个键值对结构,哈希可以用来存放用户信息,比如实现购物车。
  3. List列表(双向链表):列表(list)类型是用来存储多个有序的字符串。可以做简单的消息队列的功能。
  4. Set集合:集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一 样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。利用 Set 的交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。
  5. Sorted Set有序集合(跳表实现):Sorted Set 多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。可以做排行榜应用,取 TOP N 操作。

Redis 的数据过期策略

Redis 中数据过期策略采用定期删除+惰性删除策略

  • 定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。这种策略可以保证过期的 key 最终都会被删除,但是也存在严重的缺点:每次都遍历内存中所有的数据,非常消耗 CPU 资源,并且当 key 已过期,但是定时器还处于未唤起状态,这段时间内 key 仍然可以用。
  • 惰性删除策略:在获取 key 时,先判断 key 是否过期,如果过期则删除。这种方式存在一个缺点:如果这个 key 一直未被使用,那么它一直在内存中,其实它已经过期了,会浪费大量的空间。
  • 这两种策略天然的互补,结合起来之后,定时删除策略就发生了一些改变,不在是每次扫描全部的 key 了,而是随机抽取一部分 key 进行检查,这样就降低了对 CPU 资源的损耗,惰性删除策略互补了为检查到的key,基本上满足了所有要求。但是有时候就是那么的巧,既没有被定时器抽取到,又没有被使用,这些数据又如何从内存中消失?没关系,还有内存淘汰机制,当内存不够用时,内存淘汰机制就会上场。淘汰策略分为: 
    1. 当内存不足以容纳新写入数据时,新写入操作会报错。(Redis 默认策略)
    2. 当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key。(LRU推荐使用)
    3. 当内存不足以容纳新写入数据时,在键空间中,随机移除某个 Key。
    4. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 Key。这种情况一般是把 Redis 既当缓存,又做持久化存储的时候才用。
    5. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 Key。
    6. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 Key 优先移除。

Redis的set和setnx

Redis中setnx不支持设置过期时间,做分布式锁时要想避免某一客户端中断导致死锁,需设置lock过期时间,在高并发时 setnx与 expire 不能实现原子操作,如果要用,得在程序代码上显示的加锁。使用SET代替SETNX ,相当于SETNX+EXPIRE实现了原子性,不必担心SETNX成功,EXPIRE失败的问题。

Redis的LRU具体实现:

传统的LRU是使用栈的形式,每次都将最新使用的移入栈顶,但是用栈的形式会导致执行select *的时候大量非热点数据占领头部数据,所以需要改进。Redis每次按key获取一个值的时候,都会更新value中的lru字段为当前秒级别的时间戳。Redis初始的实现算法很简单,随机从dict中取出五个key,淘汰一个lru字段值最小的。在3.0的时候,又改进了一版算法,首先第一次随机选取的key都会放入一个pool中(pool的大小为16),pool中的key是按lru大小顺序排列的。接下来每次随机选取的keylru值必须小于pool中最小的lru才会继续放入,直到将pool放满。放满之后,每次如果有新的key需要放入,需要将pool中lru最大的一个key取出。淘汰的时候,直接从pool中选取一个lru最小的值然后将其淘汰。

Redis如何发现热点key

  1. 凭借经验,进行预估:例如提前知道了某个活动的开启,那么就将此Key作为热点Key。
  2. 服务端收集:在操作redis之前,加入一行代码进行数据统计。
  3. 抓包进行评估:Redis使用TCP协议与客户端进行通信,通信协议采用的是RESP,所以自己写程序监听端口也能进行拦截包进行解析。
  4. 在proxy层,对每一个 redis 请求进行收集上报。
  5. Redis自带命令查询:Redis4.0.4版本提供了redis-cli –hotkeys就能找出热点Key。(如果要用Redis自带命令查询时,要注意需要先把内存逐出策略设置为allkeys-lfu或者volatile-lfu,否则会返回错误。进入Redis中使用config set maxmemory-policy allkeys-lfu即可。)

Redis的热点key解决方案

  1. 服务端缓存:即将热点数据缓存至服务端的内存中.(利用Redis自带的消息通知机制来保证Redis和服务端热点Key的数据一致性,对于热点Key客户端建立一个监听,当热点Key有更新操作的时候,服务端也随之更新。)
  2. 备份热点Key:即将热点Key+随机数,随机分配至Redis其他节点中。这样访问热点key的时候就不会全部命中到一台机器上了。

如何解决 Redis 缓存雪崩问题

  1. 使用 Redis 高可用架构:使用 Redis 集群来保证 Redis 服务不会挂掉
  2. 缓存时间不一致,给缓存的失效时间,加上一个随机值,避免集体失效
  3. 限流降级策略:有一定的备案,比如个性推荐服务不可用了,换成热点数据推荐服务

如何解决 Redis 缓存穿透问题

  1. 在接口做校验
  2. 存null值(缓存击穿加锁,或设置不过期)
  3. 布隆过滤器拦截: 将所有可能的查询key 先映射到布隆过滤器中,查询时先判断key是否存在布隆过滤器中,存在才继续向下执行,如果不存在,则直接返回。布隆过滤器将值进行多次哈希bit存储,布隆过滤器说某个元素在,可能会被误判。布隆过滤器说某个元素不在,那么一定不在。

Redis的持久化机制

Redis为了保证效率,数据缓存在了内存中,但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,以保证数据的持久化。Redis的持久化策略有两种:

  1. RDB:快照形式是直接把内存中的数据保存到一个dump的文件中,定时保存,保存策略。当Redis需要做持久化时,Redis会fork一个子进程,子进程将数据写到磁盘上一个临时RDB文件中。当子进程完成写临时文件后,将原来的RDB替换掉。
  2. AOF:把所有的对Redis的服务器进行修改的命令都存到一个文件里,命令的集合。

使用AOF做持久化,每一个写命令都通过write函数追加到appendonly.aof中。aof的默认策略是每秒钟fsync一次,在这种配置下,就算发生故障停机,也最多丢失一秒钟的数据。
缺点是对于相同的数据集来说,AOF的文件体积通常要大于RDB文件的体积。根据所使用的fsync策略,AOF的速度可能会慢于RDB。
Redis默认是快照RDB的持久化方式。对于主从同步来说,主从刚刚连接的时候,进行全量同步(RDB);全同步结束后,进行增量同步(AOF)。

Redis的事务

  1. Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
  2. Redis事务没有隔离级别的概念,批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。
  3. Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。

Redis事务相关命令

  1. watch key1 key2 ... : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断(类似乐观锁)
  2. multi : 标记一个事务块的开始(queued)
  3. exec : 执行所有事务块的命令(一旦执行exec后,之前加的监控锁都会被取消掉)
  4. discard : 取消事务,放弃事务块中的所有命令
  5. unwatch : 取消watch对所有key的监控

Redis和 memcached 的区别

  1. 存储方式上:memcache会把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。redis有部分数据存在硬盘上,这样能保证数据的持久性。
  2. 数据支持类型上:memcache对数据类型的支持简单,只支持简单的key-value,,而redis支持五种数据类型。
  3. 用底层模型不同:它们之间底层实现方式以及与客户端之间通信的应用协议不一样。redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
  4. value的大小:redis可以达到1GB,而memcache只有1MB。

Redis的几种集群模式

  1. 主从复制
  2. 哨兵模式
  3. cluster模式

Redis的哨兵模式

哨兵是一个分布式系统,在主从复制的基础上你可以在一个架构中运行多个哨兵进程,这些进程使用流言协议来接收关于Master是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

每个哨兵会向其它哨兵、master、slave定时发送消息,以确认对方是否活着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机”)。

若“哨兵群“中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。

Redis的rehash

Redis的rehash 操作并不是一次性、集中式完成的,而是分多次、渐进式地完成的,redis会维护维持一个索引计数器变量rehashidx来表示rehash的进度。

这种渐进式的 rehash 避免了集中式rehash带来的庞大计算量和内存操作,但是需要注意的是redis在进行rehash的时候,正常的访问请求可能需要做多要访问两次hashtable(ht[0], ht[1]),例如键值被rehash到新ht1,则需要先访问ht0,如果ht0中找不到,则去ht1中找。

Redis的hash表被扩展的条件

  1. 哈希表中保存的key数量超过了哈希表的大小.
  2. Redis服务器目前没有在执行BGSAVE命令(rdb)或BGREWRITEAOF命令,并且哈希表的负载因子大于等于1.
  3. Redis服务器目前在执行BGSAVE命令(rdb)或BGREWRITEAOF命令,并且哈希表的负载因子大于等于5.(负载因子=哈希表已保存节点数量 / 哈希表大小,当哈希表的负载因子小于0.1时,对哈希表执行收缩操作。)

Redis并发竞争key的解决方案

  1. 分布式锁+时间戳
  2. 利用消息队列

Redis与Mysql双写一致性方案

先更新数据库,再删缓存。数据库的读操作的速度远快于写操作的,所以脏数据很难出现。可以对异步延时删除策略,保证读请求完成以后,再进行删除操作。

Redis的管道pipeline

对于单线程阻塞式的Redis,Pipeline可以满足批量的操作,把多个命令连续的发送给Redis Server,然后一一解析响应结果。Pipelining可以提高批量处理性能,提升的原因主要是TCP连接中减少了“交互往返”的时间。pipeline 底层是通过把所有的操作封装成流,redis有定义自己的出入输出流。在 sync() 方法执行操作,每次请求放在队列里面,解析响应包。

身份认证令牌技术解析与安全实践指南 身份认证令牌作为现代数字身份验证的核心机制,通过加密算法生成时效性凭证,有效提升系统安全性。其技术原理涉及会话管理、加密签名和授权流程,在Web应用、API接口和微服务架构中具有广泛应用价值。JWT和OAuth2.0是当前主流实现方案,前者采用自包含的JSON格式实现无状态认证,后者通过授权码流程支持第三方接入。在实际工程中,需要特别关注任意文件读取漏洞防护和令牌生命周期管理,结合Redis集群存储和本地缓存优化性能。金融级应用和IoT场景对令牌机制有不同要求,需根据会话有效期、跨域需求等要素选择适当方案。 阅读详情

相关推荐

Sa-Token登录流程源码逐行解读:从StpLogic.login()到Token生成与存储的每一个细节

本文深度解析Sa-Token 1.30.0版本的登录认证流程,从StpLogic.login()方法入手,详细解读Token生成、存储及分布式会话管理的实现细节。涵盖安全防护、登录模型初始化、多种Token生成策略及并发控制等核心机制,帮助开发者深入理解Sa-Token在登录认证中的高效与安全设计。

weixin_30911451的博客 411

Redis懂这八个问题,说明你已经精通了!

1、为什么使用Redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。 回答:如下所示,分为两点 (一)性能 如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 题外话:忽然

qingyangcc123的博客 235

从URDF到仿真动画:基于Simulink、Simscape与S-Function的机械臂一体化建模与控制

本文详细介绍了从URDF文件到高保真仿真动画的一体化机械臂建模与控制流程。通过整合Simulink、Simscape与S-Function,构建了包含物理特性的虚拟机械臂模型,并实现了自适应滑模等高级控制算法的嵌入与验证。该流程打通了从机械设计到控制算法验证的闭环,为机器人开发提供了高效的仿真平台。

cnn8visionary的博客 696

redis 报错

解决: redis通过属性requirepass 设置访问密码,但没有设置该属性时,客户端向服务端发送AUTH请求就会出现最上面的异常 ,所以解决办法就是 指定配置文件进行启动。 添加 391  requirepass "5vwJ4AghYNH&W4RWejfieo69C2ZPp%r@" 20:20:00 INFO com.qiji.quartz.Onlin

okkeqin的专栏 1146

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

葵花 Himawari 8/9号数据学习记录-01-数据初识

葵花卫星学习记录,第一章:卫星的来源与卫星数据的波段介绍

weixin_44111909的博客 533

redis_主从配置以及自动切换

3台虚拟机 192.168.1.52 192.168.1.53 192.168.1.54 上来做这个操作: 1.机器上编译安装(3.0.7版本)redis->wget http://download.redis.io/releases/redis-3.0.7.tar.gz 2.配置: 主:192.168.1.52 从192.168.1.53   192.168.1.54 配置文件

aa838260772的专栏 6501

MMSE (Minimum Mean Square Error)均衡原理讲解

MMSE是一种将接收数据的MSE(均方误差)最小化的模型。有了这句话,很多问题就会在你的脑海中蹦出来。 什么是均方误差?最小化MSE "的物理含义是什么? 等等。 让我们从一个我们现在已经非常熟悉的通道模型开始。(我希望你现在也熟悉下面的表达方式。) MMSE作为一种均衡器,是一种后处理算法,它可以帮助我们找出接收到的数据,使之尽可能地接近原始数据(传输数据)。简而言之,MMSE中最重要的步骤是找到一个如下图所示的矩阵G。如果我们假设没有噪声,这个[G]矩阵可以简单的作为信道矩阵(H^-1)的倒数。但

Celeste的博客 4万+

redis主从部署与自动切换

【代码】redis主从部署与自动切换。

weixin_41558221的博客 834

Ubuntu24.04/20.04设置网络共享文件夹

Ubuntu20.04利用向日葵远程控制时,不能传输文件。使用linux版本QQ来传输是可以的,不过linuxqq功能真的很弱。因此,打算在Ubuntu系统中建立一个共享文件夹,可在局域网中访问。 1、新建共享文件夹 获取root权限,或者登陆root账户。可在/home文件夹(或其它文件夹)下新建一个文件夹,如share。 右击文件夹,选择“本地网络共享”菜单。按下图设置。 点击确定。如果系统已经安装了samba服务器,就可以进入第3步。如果没有,会提示安装,按提示安装,可能会出错,可进.

willhu2008的专栏 2万+

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

Redis密码认证:安全机制与最佳实践

在众多数据库中,Redis以其高性能、持久化、分布式等特性,在缓存、消息队列等领域有着广泛的应用。然而,在实际应用中,如何确保Redis的安全性,防止未授权访问,成为了一个不容忽视的问题。这就引出了Redis密码认证这一知识点。在Redis中,密码认证是一种重要的安全机制。它通过设置密码,使得只有拥有正确密码的用户才能访问Redis服务器。这种机制可以有效防止未授权访问,保护数据安全。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 738

动态对抗Zygisk-IL2CppDumper:Unity游戏安全新策略

本文深入探讨了对抗Zygisk-IL2CppDumper攻击的Unity游戏安全新策略。通过实时内存监控、动态混淆技术和异常行为检测体系,有效防止关键代码被动态提取。文章详细介绍了内存指纹系统、运行时混淆方案和五维特征模型等实用防御手段,帮助开发者提升游戏安全性。

weixin_29325955的博客 305

Redis连接池配置:优化与性能提升

在众多NoSQL数据库中,Redis以其高性能和丰富的数据结构而备受青睐。然而,在实际应用中,频繁地直接连接Redis服务器会导致资源浪费和性能下降。为了解决这个问题,连接池应运而生。本文将围绕Redis连接池配置这一知识点展开,首先对连接池进行概述,随后深入探讨其定义、作用以及不同类型的连接池。在分布式系统中,Redis作为缓存数据库,其性能瓶颈往往在于网络延迟和连接开销。当应用程序需要频繁地读写Redis时,直接创建和销毁连接会消耗大量资源,并可能导致系统性能下降。此时,连接池的作用便凸显出来。

MoneyHacksPro的博客 708

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Redis访问控制:安全策略与实现

在众多数据库技术中,Redis以其高性能、持久化、分布式等特性,在缓存、消息队列、分布式锁等领域有着广泛的应用。然而,在实际应用中,如何确保Redis数据的安全性和访问权限,成为了一个不容忽视的问题。这就引出了本文要介绍的Redis知识点之访问控制:概述。在分布式系统中,数据的安全性和访问权限控制是至关重要的。以一个典型的场景为例,假设一个在线购物平台使用Redis来存储用户购物车信息。

我是Java程序员廖志伟,感谢朋友们的支持! 694

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Redis TLS加密传输:安全与性能解析

在当今信息时代,数据安全已成为企业及个人关注的焦点。特别是在网络通信过程中,如何确保数据传输的安全性成为了一个亟待解决的问题。Redis作为一款高性能的键值存储系统,其数据传输的安全性同样不容忽视。TLS加密传输作为一种保障数据传输安全的技术,对于Redis的使用尤为重要。以下将围绕Redis知识点之TLS加密传输:TLS概述展开,探讨其定义、发展历程以及工作原理。在现实场景中,假设某企业使用Redis进行数据存储,其服务器与客户端之间通过明文传输数据。

我是Java程序员廖志伟,感谢朋友们的支持! 907

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Redis未授权访问漏洞:从原理到实战防护指南

Redis作为高性能键值数据库,其默认配置在追求易用性的同时,往往牺牲了基础的安全性,导致未授权访问成为常见高危漏洞。该漏洞的原理在于Redis服务默认监听所有网络接口且未启用身份验证,攻击者可利用CONFIG、SET等命令直接操作数据库,甚至通过写入SSH公钥或WebShell实现远程命令执行,对服务器安全构成严重威胁。在工程实践中,防护需构建纵深防御体系,从网络访问控制、强密码认证、服务降权运行到危险命令禁用等多层面加固。本文聚焦Redis未授权访问这一典型安全风险,深入剖析其利用手法与防护方案,为构建

weixin_30245867的博客 368

Java面试突击:7天高效备战核心考点与实战技巧

Java作为企业级开发的主流语言,其面试考察点往往围绕JVM原理、并发编程和分布式架构等核心技术展开。理解JVM内存模型和垃圾回收机制是性能调优的基础,而掌握线程池、锁优化等并发工具能有效提升系统吞吐量。在分布式场景下,CAP理论和缓存策略的合理运用直接影响系统可用性。针对Java技术栈的深度与广度要求,开发者需要建立体系化的知识框架,并通过LeetCode刷题和模拟面试强化实战能力。本文特别解析HashMap扩容机制、Spring循环依赖等高频考点,并提供MySQL索引优化、Redis持久化等工程实践方案

weixin_27741699的博客 313

Java大厂面试核心考点与实战解析

Java作为企业级开发的主流语言,其技术栈的深度与广度直接影响开发者的职业发展。从JVM内存模型到并发编程原理,再到Spring框架的底层机制,这些核心技术构成了Java生态的基石。理解这些原理不仅能提升代码质量,更能应对高并发、分布式等复杂场景。尤其在互联网大厂面试中,对HashMap扩容机制、volatile关键字、Spring循环依赖等知识点的考察往往结合电商秒杀、社交Feed流等实际业务场景。掌握Redis的Lua脚本、Kafka的ISR机制等分布式中间件技术,以及LeetCode高频算法题的优化技

weixin_32288959的博客 232

HTTP认证机制:Cookie、Session与Token技术解析

HTTP协议的无状态特性要求开发者实现用户认证与会话管理机制。从技术原理看,Cookie通过客户端存储实现状态保持,Session依赖服务端会话存储,而Token则采用自包含凭证方式。在微服务架构和物联网(IoT)场景中,基于Token的轻量级认证方案因其横向扩展优势日益流行。安全实践中需特别注意防范XSS和CSRF攻击,通过HttpOnly、Secure等属性加固Cookie安全,JWT则需配合签名验证和黑名单机制。开发实战中,Spring Security和STM32 HTTP库的集成案例展示了不同技术

weixin_33966095的博客 423
上一篇: iOS一文轻松了解UIKit动画制作,如此简单
下一篇: 浅谈Servlet+JSP开发中不为人知的密码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值