随笔分类 - Redis
摘要:https://blog.csdn.net/qq_39032307/article/details/148683477
阅读全文
摘要: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
阅读全文
摘要:在使用 Redis 管道技术时,要注意一些限制,避免踩坑: Pipeline 不能保证原子性 - Pipeline 只是将客户端发送命令的方式改为批量发送,而服务端在接收到 Pipeline 发来的命令后,将其拆解为一条条命令,然后依然是串行执行。执行过程中,服务端有可能执行其他客户端的命令,所以无
阅读全文
摘要:ACID 中关于原子性的定义: 原子性:一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。 Redis事务不支持传
阅读全文
摘要:本文从网络模型、数据结构和内存管理、持久化和多机协作四个角度对redis的设计思路进行分析。 一.网络模型 Redis是典型的基于Reactor的事件驱动模型,单进程单线程,高效的框架总是类似的。网络模型与spp的异步模型几乎一致。 Redis流程上整体分为接受请求处理器、响应处理器和应答处理器三个
阅读全文
摘要:String类型:一个String类型的value最大可以存储512MHash类型:键值对个数最多为2^32-1个,也就是4294967295个(40多亿) List类型:list的元素个数最多为2^32-1个,也就是4294967295个(40多亿) Set类型:元素个数最多为2^32-1个,也就
阅读全文
摘要:一、Redis数据结构 Redis支持五种主要数据结构:字符串(String)、列表(List)、哈希表(Hash)、集合(Set)和有序集合(Sorted Set)。这些数据结构为开发者提供了灵活的数据操作方式,满足了不同场景下的数据存储需求。 字符串(String):最基本的数据类型,可以包含任
阅读全文
摘要:什么是 MongoDB MongoDB 是基于 C++ 开发的 NOSQL 开源文档数据库 ,是最像关系型数据库的 nosql,功能也是最丰富的 nosql,它具有所以的可伸缩性,灵活性,高性能,高扩展性的优势。 大致有如下特性: 面向集合文档的存储,存储 Bson (json的扩展) 格式自由,数
阅读全文
摘要:一、前言 在线人数统计这个功能实现的方式很多,这里说一下常使用的方式:使用Redis的有序集合(zset)实现。 核心方法是这四个:zadd、zrangeByScore、zremrangeByScore、zrem。 二、实现步骤 1. 如何认定用户是否在线? 认定用户在线的条件一般跟网站有关,如果网
阅读全文
摘要:单个命令多次执行 没有使用Pipeline的交互如下: package main import ( "context" "fmt" "github.com/go-redis/redis/v8" "time" ) func main() { // 创建Redis客户端 rdb := redis.New
阅读全文
摘要:1. 引言 1)消费队列 在购买火车票时,发现如果存在一个未支付的订单时,就不能再进行购票了。如果把待支付的订单放在一个队列里面,那队列的长度就只能是 1。 正好最近用 Redis 比较多,于是突发奇想,如何用 Redis 原生的数据结构实现一个简易版的延时消费队列呢? 业务状态图如下: 并且,需要
阅读全文
摘要:在开发中遇到一个问题,使用redis中的set【针对于string类型】更新一个含有过期时间的key时,会使这个key的过期时间变成永久有效: 127.0.0.1:6379> set test hello OK 127.0.0.1:6379> expire test 1000 (integer) 1
阅读全文
浙公网安备 33010602011771号