Redis Lua 脚本调试是一种强大的工具,可以帮助您快速发现和解决Lua脚本中的问题。它允许您在运行脚本时逐步执行脚本,并检查每个步骤的结果。两种调试模式从Redis 3.2开始,内置了 Lua debugger(简称LDB),使用Lua debugger可以很方便的对我们编写的Lua脚本进行调试异步模式 --ldb开启 lua dubegger ,将会 ......
207
0
0
2024-03-26
简介市面上很多介绍redis如何实现限流的,但是大部分都有一个缺点,就是只能实现单一的限流,比如1分钟访问1次或者60分钟访问10次这种,但是如果想一个接口两种规则都需要满足呢,我们的项目又是分布式项目,应该如何解决,下面就介绍一下redis实现分布式多规则限流的方式。思考如何一分钟只能发送一次验证码,一小时只能发送10次验证码等等多种规则的限流如何防止接口 ......
187
0
0
2024-03-22
在分布式系统中,当多个线程(或进程)同时操作同一个资源时,为了保证数据一致性问题,所以就需要一种机制来确保在同一时间只有一个线程(或进程)能够对资源进行修改,这就是分布式锁的作用。分布式锁是一种在分布式环境下的锁实现,它允许在多个进程或服务器之间协调对共享资源的访问或操作。分布式锁的关键特性是它能够在集群内的不同节点间保持其锁定状态,使得某一时刻仅有一个客户 ......
102
0
0
2024-03-10
说明:此次案例采用的redis是cluster模式。网络模型采用 epoll 模式本篇文章主要讲解 ,从redis原理的角度了解一个 set 命令从redis client发出到 redis server端接收到客户端请求的时候,到底经历了哪些过程?同样会附带了解下面几个问题redis的执行原理Redis cluster集群模式的运行原理同样解释了为什么re ......
220
0
0
2024-03-10
一、简介1.1 哨兵的概述哨兵(Sentinel)是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性,通过实时监测主节点和从节点的状态,及时发现并自动处理故障,保证系统的稳定运行。1.2 为什么需要哨兵?引入Redis哨兵的原因主要与以下几个方面有关:高可用性需求:在生产环境中,确保Red ......
73
0
0
2024-03-09
一、引言1.1 概念介绍Redis管道是一种用于优化多个命令执行的机制,允许客户端将多个命令一次性发送给服务器,然后一次性接收所有命令的返回结果。这种机制可以减少客户端与服务器之间的网络往返次数,从而提高性能。1.2 作用提高性能: 管道的主要作用是提高性能和吞吐量。通过将多个命令打包在一个请求中发送给服务器,可以减少网络延迟和通信开销,从而加速数据传输和处 ......
69
0
0
2024-03-08
一、发布订阅模式概述1.1 什么是发布订阅发布订阅(Publish-Subscribe)是一种消息传递模式,用于在软件系统中实现解耦和灵活的组件通信。在发布订阅模式中,消息的发送者(发布者)并不直接将消息发送给特定的接收者(订阅者),而是将消息发送到一个中心化的调度机制,通常称为消息代理或主题(topic)。订阅者可以通过订阅特定的主题来接收感兴趣的消息,从 ......
122
0
0
2024-03-03
简单原理:使用 ChatGPT enbedding,对现有的数据文档,将文本转换为向量,进行矢量化处理,并存入Redis向量数据库,实现向量相似度搜索。新的提问过来,先使用 ChatGPT enbedding 处理一次,然后根据Redis向量数据库提供的相似性搜索,找到匹配的答案。ChatGPT Embeddings是什么?Embeddings是一种将文本转 ......
219
0
0
2024-03-02
介绍RedisSearch 是一个基于 Redis 的搜索引擎模块,它提供了全文搜索、索引和聚合功能。通过 RedisSearch,可以为 Redis 中的数据创建索引,执行复杂的搜索查询,并实现高级功能,如自动完成、分面搜索和排序。利用 Redis 的高性能特点,RedisSearch 可以实现高效的搜索和实时分析。对于微服务架构来说,RedisSearc ......
200
0
0
2024-03-02
一、引言事务是数据库管理系统中的一个基本概念,用于管理对数据库的一系列操作,以确保数据的一致性和完整性。在Redis中,事务通过MULTI、EXEC、DISCARD和WATCH等命令实现。事务中的操作要么全部执行,要么全部回滚,保证了原子性。通过WATCH命令,Redis实现了乐观锁,确保在事务执行期间没有其他客户端对监视的键进行修改,以保证事务的隔离性。事 ......
123
0
0
2024-02-24
一、简介C# 中通过 StackExchange.Redis 库可以方便地操作 Redis,实现高性能的数据缓存和存储。StackExchange.Redis 提供了强大的 API,允许开发者轻松连接、读取和写入 Redis 数据。通过使用 ConnectionMultiplexer 类,可以建立与 Redis 服务器的连接,并使用 IDatabase 接口 ......
105
0
0
2024-02-24
缓存夺命连环问为什么要用缓存?用缓存,主要有两个用途:高性能、高并发。高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 ......
206
0
0
2024-02-23
Redis 全文搜索是依赖于 Redis 官方提供的 RediSearch 来实现的。RediSearch 提供了一种简单快速的方法对 hash 或者 json 类型数据的任何字段建立二级索引,然后就可以对被索引的 hash 或者 json 类型数据字段进行搜索和聚合操作。这里我们把被索引的 hash 或者 json 类型数据叫做源数据。本文大纲如下,使用体 ......
218
0
0
2024-02-17
​什么是bigkey?bigkey简单来说就是存储本身的key值空间太大,或者hash,list,set等存储中value值过多。具体来衡量的话大key是:String 类型值大于10KB。Hash、List、Set、Zset类型元素个数超过5000个。bigkey引发的问题阻塞工作线程:如果我们使用del命令删除大key,会阻塞工作线程这样就没有办法处理其 ......
225
0
0
2024-02-13
重新说说Redis实现分布式公平可重入锁的实现,这次具体说说异步唤醒机制,这次带上QPS检测在之前的文章中,我们对Redisson的lock进行了刨析如下:看门狗续期使用hash+lua实现可重入锁但是还有一点,我们之前使用的自旋+线程休眠来达到线程互斥阻塞的效果。但是这样做会有一点问题,我们每次休眠的时间都是固定的,仍然会有一大部分空窗期,我设置30s的锁 ......
83
0
0
2024-02-06