redis
文章平均质量分 89
ZhangBlossom
低头赶路,敬事如仪
展开
-
【Java项目】我是如何实现抢红包功能的?
高并发场景下实现抢红包功能的一种思路原创 2023-09-13 17:55:38 · 713 阅读 · 0 评论 -
【Redis面试】Redis的单线程模型以及为什么 Redis 选择单线程模型
Redis 使用异步 I/O 来处理客户端请求,这意味着客户端可以并发地发送请求,而 Redis 服务器则能够以非阻塞的方式处理这些请求。Redis 使用一个单独的线程来处理队列中的命令,并将命令的执行结果返回给客户端。比如定时的删除过期key等。,使得文件事件处理器既实现了高性能的网络通信模型,又可以很好地与 Redis 服务器中其他同样以单线程方式运行的模块进行对接,这保持了 Redis 内部单线程设计的简单性。Redis 是一种基于内存的高性能键值存储系统,它的单线程模型是其最显著的特征之一。原创 2023-04-01 23:12:02 · 363 阅读 · 0 评论 -
【Redis】从计算机组成原理开始讲解为什么会出现Redis
还有一个就是I/O buffer:他考虑的是一个成本问题,我们知道磁盘是有磁道和扇区的,而一个扇区有512Byte,目前大部分电脑的磁盘大小512G,那么就会有特别多的扇区(大约是10^6个),而如果扇区特别多,想要找到一个数据所需要的索引就得跟着变大,因为如果操作系统的查找文件的索引还没有扇区多,那么就会出现找不到某些索引的数据,因此操作系统的索引所占的字节数也要跟着变大。因此为了解决这个问题,操作系统在查找文件的时候都是以4k为一个标准的,因此无论我们读多大的数据,都是以4k大小去读取的。原创 2022-11-26 19:32:00 · 821 阅读 · 0 评论 -
【Docker】Redis集群扩缩容配置
而设置主从集群,首先就是为了应付大数据量的存储的同时还能防止由于redis服务器宕机导致的服务失效问题,因此主从集群要求主节点宕机之后从节点代替主节点的位置,也就是进行主从之间的迁移,让从机代替主机的位置,在没有集群模式之前,哨兵模式可以解决这个问题,主从模式虽然可以解决这个问题,但是却要求运维人员手动进行故障切换,因此集群模式合并了哨兵与主从模式的优点,会自动的进行故障迁移。当然,如果你了解redis的槽位分配的话,也可以自己手动的进行槽位的分配,比较麻烦就是了。原创 2022-10-11 10:21:23 · 1306 阅读 · 0 评论 -
【Redis】详细剖析RDB和AOF的过程以及区别
Redis是内存数据库,它将自己的数据存储在内存里面,一旦Redis服务器进程退出或者运行Redis的服务器停机,Redis中的数据就会丢失。为了避免数据丢失,所以Redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在Redis服务器进程退出或者运行Redis服务器的计算机停机导致数据丢失时,快速的恢复之前Redis存储在内存中的数据。原创 2022-10-09 13:38:33 · 1673 阅读 · 0 评论 -
【Redis】集群数据hash分片算法
Redis Cluster将所有数据划分为16384个slot(槽位),每个节点负责其中一部分槽位,槽位的信息存储与每个节点中。当Redis Cluster的客户端来连接急求你的时候,他会得到一份集群的槽位配置信息并将其缓存在客户端本地。这样当客户端要查找某个key时,可以根据槽位定位算法定位到目标节点。原创 2022-10-07 07:52:41 · 898 阅读 · 0 评论 -
【Redis】主从、哨兵、集群架构
首先主机与从机之间从机先发送一个请求数据同步的信号,主机收到之后判断是不是他们之间第一次进行数据同步,如果是的话,就同步主从之间的数据版本信息,然后从机保存这个版本信息,之后主机执行bgsave操作生成RDB,主机在RDB期间执行的所有命令会记录到repl_baklog文件中,之后将RDB文件发送给从机,从机收到RDB文件之后会清空本地数据,然后加载主机发送过来的RDB文件。对于一个小的主从架构,我们可以配置一些Redis实例作为哨兵节点,而这些哨兵节点会对主从节点中的每一个节点进行监听。原创 2022-10-06 09:07:44 · 1130 阅读 · 0 评论 -
【Redis】过期淘汰策略以及内存淘汰机制
另一个用来记录key-TTL。所以,在使用Redis的SET命令的时候,如果刚开始设定了超时时间,那么之后修改这个key,也务必加上这个超时时间的参数,避免超时时间丢失的问题。随着对内存占用的不断增长,很多原本设置了超时时间的key,随着后续的使用发现超时时间被擦除了,很可能就是由于这个原因导致的。而再次对同一个key使用SET命令的时候,并且没有设定超时时间,那么这个key的超时时间就会被擦除,情况如下。导致这个问题的原因在于:SET命令如果不设定超时时间,那么Redis会自动擦除这个key的超时时间。原创 2022-10-04 13:18:12 · 1793 阅读 · 0 评论 -
【Redis】大key的处理
String类型的值大于10kbhash、list、set、zset的元素个数超过5000个只要满足上面二者之一,我们都称这个key为大key(big key)原创 2022-10-03 08:59:33 · 756 阅读 · 0 评论 -
【Redis】缓存雪崩、缓存穿透、缓存击穿
因此,缓存穿透就是指用户访问那些在数据库和Redis中都不存在的数据,例如我们知道id采用自增策略,那么就不可能出现负数id,而如果不法分子使用负数id进行查询,那么这些请求都会穿过Redis直接向数据库发送请求,从而导致数据库压力骤增,导致数据库宕机。依旧是访问浏览器,用户访问那些存在在Redis或者数据库中的数据的时候都能正常返回结果,但是如果查询那些不存在于Redis中也不存在于数据库中的数据,那么这些无意义的查询如果非常多,都将直接穿过Redis而导向数据库,导致数据库压力提高,造成宕机。原创 2022-10-02 08:45:30 · 1326 阅读 · 0 评论 -
【Redis】到底是单线程还是多线程以及Redis为什么这么快?
多个角度解释为什么Redis这么快原创 2022-10-01 08:42:18 · 2121 阅读 · 0 评论 -
【Redis】动态字符串SDS
首先,Redis中的key使用的是字符串,而value则有各种类型,不过多数为字符串。因此字符串是Redis中最常用的一种数据结构。本质为字符数组,计算长度麻烦通过特定标识作为字符串结尾,若value中有该标识则可能出现字符串保存错误问题通过指针指向数组,不方便修改,只能使得指针指向另一字符串综上,如果直接使用C语言中的字符串,那么将会带来一些不必要的麻烦。因此Redis采用了类似于Java中字符串实现方式的方式来实现。但是C语言并没有类,因此C语言使用的是结构体来完成这一结构。原创 2022-09-27 23:21:28 · 697 阅读 · 0 评论 -
Centos7实现单服务器安装并开启多个Redis服务
实现Redis的安装以及单台服务器开启多个Redis服务的教程原创 2022-09-16 23:09:53 · 5311 阅读 · 5 评论