redis
文章平均质量分 59
NUS_Ryan
规矩严格,功夫到家
展开
-
Redis(七): 事务和事件
redis基于reactor模式开发了自己的网络事件处理器,使用IO多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分排期,分排期会根据套接字产生的事件类型调用相应的事件处理器。服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能一直监听,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。Redis 将所有时间事件都放在一个无序链表中,通过遍历整个链表查找出已到达的时间事件,并调用相应的事件处理器。Redis服务器是一个事件驱动程序。原创 2023-02-11 23:38:19 · 337 阅读 · 0 评论 -
Redis(六):数据淘汰策略和键值对过期时间
但是对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。Redis可以为每一个键设置过期时间,当键过期时,会自动删除该键。可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。原创 2023-02-11 23:26:51 · 113 阅读 · 0 评论 -
Redis(六): 数据淘汰策略和键值对过期时间
Redis可以为每一个键设置过期时间,当键过期之后,会自动删除该键。对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。可以设置内存最大使用量,当内存使用量超出的时候,会执行数据淘汰策略。Redis具体有6种淘汰策略作为内存数据库,出于对性能和内存消耗的考虑,Redis 的淘汰算法实际实现上并非针对所有 key,而是抽样一小部分并且从中选出被淘汰的 key。使用 Redis 缓存数据时,为了提高缓存命中率,需要保证缓存数据都是热点数据。可以将内存最大使用量设置原创 2023-02-10 13:56:07 · 155 阅读 · 0 评论 -
Redis(五):五种数据类型和两种数据结构
redis数据类型和数据结构转载 2023-02-10 13:44:42 · 71 阅读 · 0 评论 -
Redis(四):跳表
在传统的单链表中,每个元素都存放这下一个元素的引用,我们查找元素时,需要从链表头开始从前向后遍历,查找的时间复杂度为O(n)。传统链表的查询效率非常低。那有没有什么办法提高效率呢?我们可以采用空间换时间的办法,将上面的每两个元素抽出来做一个类似于索引的链表。假设我们要查询6,我们从上层链表开始遍历,当遍历到7时,大于目标值,我们需要到下一层接着找目标值。在上述遍历中,我们只需要遍历1、3、5、5、6即可找到目标结点,在普通的链表中需要1、2、3、4、5、6才能找到int val;} }原创 2023-02-08 21:49:48 · 420 阅读 · 0 评论 -
Redis(三):事务和事件
`一个事务包含了多个命令,服务器在执行事务期间,不会改去执行其他客户端的命令请求。事务中的多个命令被一次性发送给服务器,而不是一条一条发送,这种方式被称为流水线,他可以减少客户端和服务器之间的网络通信次数从而提高性能。Redis最简单的事务实现方式是使用MULTI和EXEC命令将事务操作包围起来。事件是redis中更细粒度的动作。redis服务器实际上是一个事件驱动程序。文件事件:服务器通过套接字和客户端或者其他服务器进行通信,文件事件就是对套接字操作的抽象。Redis基于Reactor模式开发了原创 2023-02-08 21:14:43 · 89 阅读 · 0 评论 -
Redis(二):缓存穿透,缓存击穿和缓存雪崩
当发送请求时通过key去缓存查询,如果不存在对应的value就应该去数据库查找。一些恶意的请求会故意查询不存在的key,而且需求量很大的时候就会对后端系统造成很大压力,数据库就很有可能会挂掉。原创 2023-02-08 21:02:35 · 57 阅读 · 0 评论 -
Redis(一):Redis为什么这么快,RDB持久化,AOF持久化
Redis将所有数据存放到内存中,非数据同步正常工作中,不需要从磁盘读取数据的,0次IO,内存响应时间大约为100纳秒Redis是单线程,并发的数据结构实现不但困难而且测试起来非常麻烦。而且单线程避免了线程切换以及加锁释放带来的消耗,对于服务端来说,锁和线程切换通常是性能杀手。当然,单线程也有缺点。比如当一个命令执行时间过长,会造成其他命令的阻塞。采用了非阻塞多路IO复用机制。IO多路复用实际上是说多个连接的管理可以在同一进程。多路是指网络连接,复用知识同一个线程。在网络服务中,原创 2023-02-08 20:13:29 · 85 阅读 · 0 评论