随笔分类 - Redis
摘要:Redis是单线程,单线程意味着任何一条命令的执行都是串行,也就是按顺序一条一条的执行。那么当执行的命令耗时,就会导致后续的Redis访问都会阻塞。也就是说单线程是指Redis主要的工作线程(主线程)在运行过程中只有一个线程来处理客户端的请求和执行命令,但是Redis并不完全是单线程,它使用了多路复
阅读全文
摘要:Redis 脑裂是指 Redis 服务器在运行过程中出现的一种异常情况,即一个 Redis 实例分裂成了两个或多个独立运行的部分,它们之间失去了通信和数据同步。 一、原因 Redis 脑裂是指在 Redis 服务器的运行过程中,一个 Redis 实例意外地分裂成两个或多个独立运行的部分,导致它们之间
阅读全文
摘要:什么是布隆过滤器 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中,是Redis 4.0 版本提
阅读全文
摘要:区别 1)操作结果:SPOP:用于从集合中随机移除并返回一个或多个元素。如果指定了count参数,则可以从集合中移除指定数量的随机元素并返回这些元素。如果不指定count参数或集合中的元素数量少于请求的count数量,则默认移除并返回一个元素。SRANDMEMBER:用于从集合中随机返回一个或多个元
阅读全文
摘要:1. 避免慢查询命令 慢查询命令指的是执行较慢的命令,Redis自身提供了许多的命令,并不是所有的命令都慢,这和命令的操作复杂度有关,因此必须知道Redis不同命令的复杂度。 比如说,Value 类型为 String 时,GET/SET 操作主要就是操作 Redis 的哈希表索引。这个操作复杂度基本
阅读全文
摘要:命令概述 SMembers命令用于获取一个集合的所有成员。它的语法如下: SMEMBERS key 其中,key是集合的名称。 SMembers命令返回一个包含所有集合成员的数组。如果集合不存在,返回空数组。 关键因素 内存占用:Redis 是内存数据库,因此集合的大小直接影响到内存使用量。 网络传
阅读全文
摘要:redis是用"单线程-多路复用io模型"来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion(set类型元素合并)之类的比较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发
阅读全文
摘要:原因1:实例内存达到上限 1)排查思路 如果 Redis 实例设置了内存上限 maxmemory,那么也有可能导致 Redis 变慢。 当把 Redis 当做缓存使用时,通常会给这个实例设置一个内存上限 maxmemory,然后设置一个数据淘汰策略。而当实例的内存达到了 maxmemory 后,可能
阅读全文
摘要:1、先进行基准测试,查看redis是否存在查询过慢情况,根据自己的情况而定2、检查网络连接是否出现延迟,数据丢包问题(可能性小)3、开启慢查询日志,通过日志可以清楚知道哪些命令比较耗时,同时避免使用复杂O(N) 等命令4、查看是否写入了bigkey,避免写入bigkey5、查看是否出现大量集中的ke
阅读全文