作者文章

fwq

FWQ
服务器教程
基于Redis+Lua脚本实现分布式限流组件封装的方法
基于Redis+Lua脚本实现分布式限流组件封装的方法 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《基于Redis+Lua脚本实现分布式限流组件封装的方法》,聊聊Redislua脚本、分布式限流组件,希望可以帮助到正在努力赚钱的你。 创建限流组件项目 pom.xml文件中引入相关依赖 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-aop com.google.guava guava 18.0 在resources目录下创建lua脚本  ratelimiter.lua -- -- Created by IntelliJ IDEA. -- User: 寒夜 -- -- 获取方法签名特征 local methodKey =…
2025-05-10 阅读全文 →
FWQ
服务器教程
利用Redis和JavaScript构建实时搜索引擎:如何快速检索文章
利用Redis和JavaScript构建实时搜索引擎:如何快速检索文章 小伙伴们有没有觉得学习数据库很有意思?有意思就对了!今天就给大家带来《利用Redis和JavaScript构建实时搜索引擎:如何快速检索文章》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你! 利用Redis和JavaScript构建实时搜索引擎:如何快速检索文章 引言:在当今互联网时代,快速检索大量数据是极其重要的。对于一个拥有大量文章的网站来说,实时搜索引擎能够提供高效的检索功能,让用户快速找到所需的信息。本文将介绍如何使用Redis和JavaScript构建一个实时搜索引擎,以便快速检索文章。 一、Redis简介Redis是一个基于内存的高性能键值存储系统,广泛应用于缓存、消息队列、实时统计等领域。它提供了丰富的数据结构,如字符串、哈希、列表、集合和有序集合等,能够满足各种不同场景下的需求。 二、文本索引在构建实时搜索引擎前,首先需要对文章进行文本索引。文本索引是通过特定的算法将文章中的关键词提取出来,构建索引数据结构,以便快速查找相关文章。 文本分词在将文章进行索引前,需要将文章进行分词。分词是将文章按照一定的规则切割成独立的词语,以便后续的索引。常见的分词技术包括基于规则的分词、基于统计的分词和基于机器学习的分词等。 这里我们使用一种简单的分词方法,将文章中的空格作为分隔符,提取出每个单词。 function tokenize(text) { return text.split(" "); } // 示例 var text = "利用Redis和JavaScript构建实时搜索引擎"; var tokens = tokenize(text); console.log(tokens); // ["利用Redis和JavaScript构建实时搜索引擎"]…
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis配置外网可访问(redis远程连接不上)的方法
Redis配置外网可访问(redis远程连接不上)的方法 收藏 最近发现不少小伙伴都对数据库很感兴趣,所以今天继续给大家介绍数据库相关的知识,本文《Redis配置外网可访问(redis远程连接不上)的方法》主要内容涉及到Redis等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~ 默认情况下,当我们在部署了redis服务之后,redis本身默认只允许本地访问。Redis服务端只允许它所在服务器上的客户端访问,如果Redis服务端和Redis客户端不在同一个机器上,就要进行配置。 使用redis报错 例如使用redis的PHP代码: connect('192.168.1.4', 6379); $redis->set('tag', 'hello'); echo 'name:', $redis->get('tag'); ?> 执行以上代码时,报错如下: Fatal error: Uncaught exception ‘RedisException' with message ‘Redis server went away' in xxxx…
2025-05-10 阅读全文 →
FWQ
服务器教程
浅析Redis Sentinel 与 Redis Cluster
浅析Redis Sentinel 与 Redis Cluster 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《浅析Redis Sentinel 与 Redis Cluster》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟! 一、前言 互联网高速发展的今天,对应用系统的抗压能力要求越来越高,传统的应用层+数据库已经不能满足当前的需要。所以一大批内存式数据库和Nosql数据库应运而生,其中redis,memcache,mongodb,hbase等被广泛的使用来提高系统的吞吐性,所以如何正确使用cache是作为开发的一项基技能。本文主要介绍Redis Sentinel 及 Redis Cluster的区别及用法,Redis的基本操作可以自行去参看其官方文档 。 其他几种cache有兴趣的可自行找资料去学习。 二、Redis Sentinel 及 Redis Cluster 简介 1、Redis Sentinel  Redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。它的主要功能有以下几点: 不时地监控redis是否按照预期良好地运行;…
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis数据库分布式设计方案介绍
Redis数据库分布式设计方案介绍 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Redis数据库分布式设计方案介绍》,主要介绍了Redis分布式,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 问题:1-2亿数据需要缓存,如何设计? 1 哈希取余分区 2亿条记录就是2亿个k,v,假设有3台机器构成一个集群,用户每次读写操作都是根据公:hash(key) % N个机器台数,计算出哈希值,并用来决定数据映射到哪一个节点上。取数据的时候只需要个根据公式在相应的机器,用key就可以取到value。 优点:  简单粗暴,直接有效,只需要预估好数据规划好节点,例如3台、8台、10台,就能保证一段时间的数据支撑。使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡+分而治之的作用。 缺点:原来规划好的节点,进行扩容或者缩容就比较麻烦了,不管扩缩,每次数据变动导致节点有变动,映射关系需要重新进行计算,在服务器个数固定不变时没有问题,如果需要弹性扩容或故障停机的情况下,原来的取模公式就会发生变化:Hash(key)/3会变成Hash(key) /?。此时地址经过取余运算的结果将发生很大变化,根据公式获取的服务器也会变得不可控。某个redis机器宕机了,由于台数数量变化,会导致hash取余全部数据重新洗牌。 2 一致性哈希算法分区 提出一致性Hash解决方案,目的是当服务器个数发生变动时,尽量减少影响客户端到服务器的映射关系。 2.1 一致性哈希环         一致性哈希算法必然有个hash函数并按照算法产生hash值,这个算法的所有可能哈希值会构成一个全量集,这个集合可以成为一个hash空间[0,2^32-1],这个是一个线性空间,但是在算法中,我们通过适当的逻辑控制将它首尾相连(0 = 2^32),这样让它逻辑上形成了一个环形空间。         它也是按照使用取模的方法,前面笔记介绍的节点取模法是对节点(服务器)的数量进行取模。而一致性Hash算法是对2^32取模,简单来说, 一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环 ,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个哈希环如下图:整个空间 按顺时针方向组织 ,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、……直到2^32-1,也就是说0点左侧的第一个点代表2^32-1, 0和2^32-1在零点中方向重合,我们把这个由2^32个点组成的圆环称为Hash环。 2.2…
2025-05-10 阅读全文 →
FWQ
服务器教程
React 组件的常用生命周期函数汇总
React 组件的常用生命周期函数汇总 收藏 本篇文章向大家介绍《React 组件的常用生命周期函数汇总》,主要包括函数、React组件、生命、周期,具有一定的参考价值,需要的朋友可以参考一下。 1. 概述 意义:组件的生命周期有助于理解组件的运行方式、完成更复杂的组件功能、分析组件错误原因等。 组件的生命周期:组件从被创建到挂载到页面中运行,再到组件不用时卸载的过程。 生命周期的每个阶段总是伴随着一些方法调用,这些方法就是生命周期的钩子函数。 钩子函数的作用:为开发人员在不同阶段操作组件提供了时机。 只有类组件才有生命周期。 2. 生命周期的三个阶段 每个阶段的执行时机 每个阶段钩子函数的执行顺序 每个阶段钩子函数的作用 2.1. 创建时(挂载阶段) 执行时机:组件创建时(页面加载时) 执行顺序:constructor() -> render() -> componentDidMount() 钩子函数的作用: 钩子函数 触发时机 作用 constructor…
2025-05-10 阅读全文 →
FWQ
服务器教程
如何使用Redis实现分布式计算功能
如何使用Redis实现分布式计算功能 今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《如何使用Redis实现分布式计算功能》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习! 如何使用Redis实现分布式计算功能 引言:随着互联网技术的快速发展,越来越多的应用程序需要处理大规模的数据和复杂的计算。在传统的单机计算环境下,处理这些任务可能会变得非常困难和低效。为了充分利用分布式系统的优势,一种常见的解决方案是将计算任务分解为多个小任务,并在多个计算节点上并行地执行。本文将介绍如何使用Redis实现分布式计算功能,以及提供具体的代码示例。 一、Redis简介Redis是一个高性能的内存数据库,提供了丰富的数据结构和强大的IO操作能力。它通常用于缓存、消息队列、分布式锁等场景,并且可以通过复制和分片机制来实现高可用和可扩展性。在分布式计算中,Redis作为一个中间件,可以充当任务调度和结果收集的角色。 二、分布式计算的基本思路在分布式计算中,任务通常会被分解为多个小任务,并在多个计算节点上并行地执行。这些计算节点可以是独立的进程、线程或者机器。具体的分布式计算框架通常会提供任务调度、数据传输和结果收集等功能。 三、使用Redis实现分布式计算 任务调度 任务调度是分布式计算中的核心部分。我们可以使用Redis的列表数据结构来实现一个任务队列,将待执行的任务放入到队列中,然后由计算节点来消费队列中的任务。 示例代码如下: import redis # 连接Redis实例 r = redis.Redis(host='localhost', port=6379, db=0) # 生产者将任务放入队列 def enqueue_task(queue, task): r.lpush(queue, task) # 消费者从队列中获取任务…
2025-05-10 阅读全文 →
FWQ
服务器教程
Spring Boot 项目集成Redis的方式详解
Spring Boot 项目集成Redis的方式详解 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Spring Boot 项目集成Redis的方式详解》,聊聊Redis、springboot、集成,希望可以帮助到正在努力赚钱的你。 集成方式 使用Jedis Jedis是Redis官方推荐的面向Java的操作Redis的客户端,是对服务端直连后进行操作。如果直接使用Jedis进行连接,多线程环境下是非线程安全的,正式生产环境一般使用连接池进行连接。 redis.clients 绑定配置 ​完成Redis服务端的安装之后,我们开始在项目中进行集成。这里我们先介绍使用Jedis的方式进行的集成。先按上面的提及的方式进行依赖的引入。然后将Redis的相关信息配置到配置文件中去。我们可以的新建一个配置文件redis.properties,内容如下: # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接超时时间(毫秒) spring.redis.timeout=0…
2025-05-10 阅读全文 →
FWQ
服务器教程
如何使用Python代码获取Azure Redis的监控指标值
如何使用Python代码获取Azure Redis的监控指标值 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何使用Python代码获取Azure Redis的监控指标值》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 问题描述 通过Metrics监控页面,我们能得知当前资源(如Redis)的运行情况与各种指标。如果我们需要把指标下载到本地或者生成JSON数据导入到第三方的监控平台呢?Azure是否可以通过Python代码或者时Powershell脚本导出各种指标数据呢? 解决办法 可以!       PowerShell命令可以使用Get-AzMetric 或者是 az monitor metrics list命令来获取资源的Metrics值。 Get-AzMetric:Gets the metric values of a resource. https://docs.microsoft.com/en-us/powershell/module/az.monitor/get-azmetric?view=azps-5.4.0&viewFallbackFrom=azps-5.2.0  az monitor metrics list: List the…
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis6通信协议升级至RESP3,一口气看完13种新数据类型
Redis6通信协议升级至RESP3,一口气看完13种新数据类型 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Redis6通信协议升级至RESP3,一口气看完13种新数据类型》,聊聊Redis、RESP V2协议,我们一起来看看吧! 在前面的文章 Redis:我是如何与客户端进行通信的 中,我们介绍过RESP V2版本协议的规范,RESP的全程是Redis Serialization Protocol,基于这个实现简单且解析性能优秀的通信协议,Redis的服务端与客户端可以通过底层命令的方式进行数据的通信。 随着Redis版本的不断更新以及功能迭代,RESP V2协议开始渐渐无法满足新的需求,为了适配在Redis6.0中出现的一些新功能,在它的基础上发展出了全新的下一代RESP3协议。 下面我们先来回顾一下继承自RESP V2的5种数据返回类型,在了解这些类型的局限性后,再来看看RESP3中新的数据返回类型都在什么地方做出了改进。 1、继承RESP v2的类型 首先,协议中数据的请求格式与RESP V2完全相同,请求的格式如下: * CRLF$1的字节长度> CRLF1的数据> CRLF$2的字节长度> CRLF2的数据> CRLF…$N的字节长度> CRLFN的数据> CRLF 每行末尾的CRLF转换成程序语言是\r\n,也就是回车加换行。以set name…
2025-05-10 阅读全文 →