分类归档

服务器教程

服务器知识、操作系统教程、服务器常用软件等

FWQ
服务器教程
redis发布订阅_动力节点Java学院整理
redis发布订阅_动力节点Java学院整理 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《redis发布订阅_动力节点Java学院整理》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果博主发表了文章,那么100个人就会同时收到通知邮件,除了这个场景还能找到其他场景么,当然有啦,你想想,如果你要在内存里面做一个读写分离的程序,为了维持数据的完整性,你是不是需要保证在写入的时候,也要分发到各个读内存的程序中呢?所以说场景还是很多的,在于你的挖掘~~~ 下面还是从基本命令入手: 一:命令简介 从redis手册上面可以看到,其实“发布、订阅”模式才区区6个命令,下面听我一一解说下哈~~~ 1. subscribe SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。      从上面的官方解释上来看,它的玩法有一点像现实生活中我们听收音机一个道理,要想听收音机,我们要做什么?肯定就是调频啦,只有在正确的频道上面,我们才能听得到好听的节目,所以说subscribe首先要订阅一个频道(channel),下面我举个例子,开两个client,分别订阅着msg 这个频道,比如下面这样: 2.publish   到现在为止,这两个subscibe都在监视着msg这个频道,接下来,如果msg频道有消息传出,必定会被subscribe接收到,先我们还是看看redis手册上怎么用这个命令。 PUBLISH channel message 将信息 message 发送到指定的频道 channel 。 看到上面命令的用法,我也就放心了。 看到么有,publish在msg这个频道上面发送消息后,被subscribe监视到了,然后就被分别打印输出了,好了,到现在为止,最基本的发布订阅模式就是这样,是不是很简单哈。。。其实呢??? 也就是这么简单呐,但是呢,有时候我们还有这样一个需求,就是我能不能模糊匹配key呢???举了例子,就是要求订阅china为前缀的所有频道,如果这样也可以做到的话,那确实是很牛啦。。。强大的redis自然会做到这一点,它提供了的命令就是:Psubscribe。 3. Psubscribe PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis在高可用架构中的应用实践
Redis在高可用架构中的应用实践 收藏 从现在开始,我们要努力学习啦!今天我给大家带来《Redis在高可用架构中的应用实践》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习! Redis是一种高性能的非关系型数据库,广泛应用于互联网应用和分布式系统中。随着互联网应用的日益复杂,高可用架构成为了越来越重要的考虑因素。本文将探讨Redis在高可用架构中的应用实践。 Redis的主从复制 在Redis中,主从复制是实现高可用性的基本手段。通过将一个Redis节点设置为主节点,其他节点设置为从节点,主节点负责写入数据,从节点则复制主节点的数据,并提供读服务。当主节点宕机时,可以从从节点中选举一台作为新的主节点,保证系统的高可用性。 在配置主从复制时,需要注意以下几点: 1)主节点和从节点的配置应尽量相同,包括内存、CPU、网络带宽等。 2)开启主节点的AOF或RDB持久化,以确保数据的可靠性。 3)从节点应尽量分布在主节点所在机房的不同服务器上,增加系统的容错性。 4)从节点的复制延迟应该控制在一个可接受的范围内。 Redis Sentinel Redis Sentinel是Redis官方提供的一种高可用性解决方案,主要用于监控Redis节点的状态,并在节点发生故障时执行自动故障转移。 Redis Sentinel的核心功能包括: 1)监控。Sentinel会周期性地检测Redis主节点和从节点的状态,如果节点失效,则会发起自动故障转移流程。 2)故障转移。在Redis主节点失效时,Sentinel会从所有的从节点中选举一台作为新的主节点,并将其他从节点切换到新的主节点。 3)配置管理。Sentinel可以自动更新Redis节点的配置,并将新的配置同步到其他节点。 在使用Redis Sentinel时,需要注意以下几点: 1)Sentinel节点的数量应该为奇数,以提高系统的容错性。 2)Sentinel节点应该分布在不同的服务器上,以防止单点故障。 3)Sentinel节点应该配置成使用哨兵模式,在多个节点之间相互监控,提高系统的可靠性。 Redis Cluster Redis…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis实现登录注册的示例代码
Redis实现登录注册的示例代码 0浏览 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Redis实现登录注册的示例代码》,聊聊注册、Redis登录,希望可以帮助到正在努力赚钱的你。 1. 引言 在传统的项目中,用户登录成功,将用户信息保存在session中,这种方式在微服务架构中会产生一系列问题。例如在购物车服务具有多台服务器,当一个请求落在购物车1号服务器后,其session保存了用户信息,另一个请求落在了购物车2号服务器,发现没有用户信息,则重新需要进行登录。服务器之间有session不共享的问题。为了解决这一问题,tomcat提出了内存拷贝,即只需要配置一些信息即可实现多台服务器之间的session拷贝,但是这种解决方案也有缺陷,例如: 浪费空间 拷贝有延时,如果在延时内有请求访问,则还会出现上述问题 为了解决此类问题,我们需要使用多个服务共享的信息平台,例如Redis 2. 流程图及代码实现 直接上流程图 流程图简洁明了,其中需要注意的是 Redis中存入验证码的key是手机号拼接的字符串,为什么保存用户到Redis的key要使用随机token,而不是手机号拼接的字符串呢? 因为在用户登录注册时,服务器会获取到手机号,所以可以使用手机号作为key,进行验证手机号和验证码时也方便进行匹对,那么在保存用户信息到Redis时为什么要使用随机token呢?因为在用户独立成功后,用户的每次请求都会携带cookie,如果将保存用户信息的key设置为含手机号的,那么用户的请求中的cookie也需要携带手机号,这样就会有一定的安全风险,所以在用户登录成功后,我们随机生成token,用token作为key,并且返回给前端token,这样前端请求时就会携带token,也避免了安全隐患。 2.1 生成验证码保存到Redis @Override public Result sedCode(String phone, HttpSession session) { //1. 校验手机号…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis的集群模式下的监控和调优方法
Redis的集群模式下的监控和调优方法 收藏 学习数据库要努力,但是不要急!今天的这篇文章《Redis的集群模式下的监控和调优方法》将会介绍到等等知识点,如果你想深入学习数据库,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助! Redis是一种高性能的NoSQL数据库,被广泛应用于互联网应用中。在Redis的集群模式下,为了保证系统的稳定性和高可用性,监控和调优工作尤为重要。本文将介绍Redis集群模式下的监控和调优方法。 一、监控方法 监控Redis运行状态 在Redis集群模式下,每个节点的运行状态都非常重要。我们可以通过以下命令来监控Redis节点的状态: $ redis-cli -c -p 7381 cluster nodes 该命令可以查看所有节点的状态信息,包括节点ID、IP地址、端口号、状态等。 监控Redis性能指标 为了保证正常运行,并获得最佳性能,需要监控Redis的性能指标,例如QPS(每秒查询数)、内存使用情况、网络延迟等等。我们可以通过以下工具来进行监控: Redis监控工具:如redis-stat、redis-top等。 第三方监控工具:如Zabbix、Nagios等。 由于Redis集群模式下每个节点都是独立的,因此需要对每个节点进行监控。 监控Redis数据同步状态 在Redis集群模式下,每个节点都需要进行数据同步,以达到数据一致性。我们需要监控数据同步状态,以确保数据同步的正常进行。 可以通过以下命令来监控数据同步状态: $ redis-cli -c -p 7381…
2024-12-01 阅读全文 →
FWQ
服务器教程
一文详解 Redis 中 BigKey、HotKey 的发现与处理
一文详解 Redis 中 BigKey、HotKey 的发现与处理 0浏览 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《一文详解 Redis 中 BigKey、HotKey 的发现与处理》,主要介绍了Redis、数据库、BigKey、HotKey、阿里云,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!   一 前言 在Redis的使用过程中,我们经常会遇到BigKey(下文将其称为“大key”)及HotKey(下文将其称为“热key”)。大Key与热Key如果未能及时发现并进行处理,很可能会使服务性能下降、用户体验变差,甚至引发大面积故障。 二 大Key与热Key的定义 我们经常能够在公司内部的Redis开发使用规范手册,或网络中大量的Redis最佳实践文章里看到有关大Key、热Key的定义,然而这些资料中的大Key热Key判定标准却不尽相同,但可以明确的是,它们的判定维度是一致的:大Key通常都会以数据大小与成员数量来判定,而热Key则以其接收到的请求频率、数量来判定。 1 什么是大Key 通常我们会将含有较大数据或含有大量成员、列表数的Key称之为大Key,下面我们将用几个实际的例子对大Key的特征进行描述: 一个STRING类型的Key,它的值为5MB(数据过大) 一个LIST类型的Key,它的列表数量为20000个(列表数量过多) 一个ZSET类型的Key,它的成员数量为10000个(成员数量过多) 一个HASH格式的Key,它的成员数量虽然只有1000个但这些成员的value总大小为100MB(成员体积过大) 需要注意的是,在以上的例子中,为了方便理解,我们对大Key的数据、成员、列表数给出了具体的数字。为了避免误导,在实际业务中,大Key的判定仍然需要根据Redis的实际使用场景、业务场景来进行综合判断。 2…
2024-12-01 阅读全文 →
FWQ
服务器教程
华为云分布式缓存Redis服务助力企业数据处理加速
华为云分布式缓存Redis服务助力企业数据处理加速 0浏览 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《华为云分布式缓存Redis服务助力企业数据处理加速》,介绍一下华为云,希望对大家的知识积累有所帮助,助力实战开发!  华为云分布式缓存Redis服务是兼容Redis的内存数据库服务,基于双机热备的高可用架构,提供单机、主从、集群等丰富类型的缓存类型,为用户提供高性能、高可用、可伸缩的数据缓存服务。与自建开源的Redis相比,华为云分布式缓存Redis服务更简单易用,安全可靠,解决了自建开源Redis在容量、部署、运维、安全性等方面的不足之处。 在云计算环境下,日益增长的海量数据与用户请求为缓存服务带来新的挑战,当前云缓存存在的局限也逐渐显现出来: 弹性方面: ·云缓存受限于ECS的规格单位,2N固定规格; ·实例启动时间5分钟。 性能方面: ·受限于底层虚拟机配置,无法充分利用Redis性能; ·不可避免的Hypervisor开销; ·目前常见的Proxy集群架构受制于Proxy的性能。 资源利用率方面: ·基于成本和客户场景的规格; ·非必要功能的使用影响整体资源利用率。 为了突破当前云缓存在弹性、性能、资源利用率等方面的局限,华为云DCS2.0应运而生。DCS2.0是一个在华为云上提供的新一代分布式缓存,主要聚焦以下几点: 1、灵活弹性:低至128M微实例,以G为单位伸缩 垂直伸缩:每个缓存节点的存储容量可以平滑伸缩 水平伸缩:基于原生Cluster集群的sharding 功能做到真正的水平伸缩 2、***性能:物理机部署+容器化,消除虚拟层开销;原生集群突破proxy限制 物理机部署+容器化消除虚拟层开销 打破Proxy的性能瓶颈 3、更优化性价比:单实例内存利用率100%,大数据场景下冷数据offload到Flash 通过容器隔离,将OS开销、主备复制开销等消耗均摊,每个单实例的内存利用率100%。 大数据场景下通过将冷数据offload到Flash,提供更高的性价比选择 华为云新一代分布式缓存Redis服务提供标准的、可持久化的内存数据库服务,满足用户高读写性能及快速数据访问的业务诉求,助力企业应用数据处理加速!目前用户可在华为云官网上免费领取Redis实例,一键开通,方便灵活!并且,现在体验Redis就有机会获得星巴克咖啡双人券。用星说出你的爱,Redis等你来表白!欢迎大家参与Redis表白活动:…
2024-12-01 阅读全文 →
FWQ
服务器教程
python中使用redis用法详解
python中使用redis用法详解 0浏览 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《python中使用redis用法详解》,聊聊pythonredis,我们一起来看看吧! Redis是一个开源的基于内存也可持久化的Key-Value数据库,采用ANSI C语言编写。它拥有丰富的数据结构,拥有事务功能,保证命令的原子性。由于是内存数据库,读写非常高速,可达10w/s的评率,所以一般应用于数据变化快、实时通讯、缓存等。但内存数据库通常要考虑机器的内存大小。 redis支持存储的value类型有很多种,如string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。 为了保证效率,数据都是缓存在内存中。可以周期性的把更新的数据写入磁盘或者把修改操作写入追加文件。Redis提供了Python,Ruby,Java,Php的客户端,使用很方便,本文主要以Python来讲解Redis的操作。 安装redis pip install redis 连接redis,加上decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。 import redis # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 r = redis.Redis(host='localhost', port=6379, decode_responses=True) # host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379 r.set('name', 'junxi')…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis持久化机制的示例分析
Redis持久化机制的示例分析 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《Redis持久化机制的示例分析》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ Redis把数据存储在内存中,当进程退出后数据就会丢失。Redis持久化机制可以将内存中的数据存储到磁盘上,当重新启动时可以从磁盘文件中读取数据加载到内存中。 Redis支持两种持久化机制:全量镜像RDB和增量式持久化AOF。 RDB是Redis的快照,存储了Redis中所有未过期的键值对。 在redis.conf中配置RDB: dbfilename dump.rdb dir /var/lib/redis save 900 1 save 300 10 save 60 10000 save "" stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes 每次redis进程启动时会先检查rdb文件是否存在,若存在则将文件中的内容加载到内存中。 redis自动更新RDB文件时会fork一个子进程执行快照保存工作,在保存期间主进程可以正常的提供服务。 我们同样可以通过指令保存快照: save: 以阻塞的方式保存快照,保存期间redis不能处理其它请求 bgsave: fork一个子进程完成保存工作,保存期间不会影响redis的正常服务。 lastsave命令可以得到最新的RDB文件创建时间戳,可以用来检查保存是否成功。 RDB作为数据库快照,每次创建都需要将整个数据库写入到文件。这是一个非常耗时的操作,因此也难以频繁进行,在出现异常时可能丢失大量数据。 Redis提供了增量式持久化工具AOF(Append Only ile), AOF通过记录Redis数据库中所有写指令进行持久化。AOF文件中以Redis通信协议的格式存储指令。 当Redis进程启动时会检查AOF文件是否存在,若存在则依次执行AOF中的指令恢复数据。 Redis每次执行写指令时都会向AOF文件中添加一条日志,但新的记录不会立即写入磁盘(fsync)而是缓存在写入缓冲区中。 我们可以配置将缓冲区中的数据写入磁盘的策略,避免数据丢失。 将缓冲区中数据写入磁盘是一个耗时操作,频繁写磁盘会对性能造成影响但是Redis崩溃丢失数据也较少,因此我们需要根据应用场景进行权衡。…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis在缓存预热中的应用实战
Redis在缓存预热中的应用实战 收藏 “纵有疾风来,人生不言弃”,这句话送给正在学习数据库的朋友们,也希望在阅读本文《Redis在缓存预热中的应用实战》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新数据库相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢! Redis是一种内存缓存数据库,经常在互联网应用中用来进行缓存,加速程序运行速度,提升性能。在实际应用过程中,缓存预热是保证Redis缓存命中率高的一种方式,本文将介绍Redis在缓存预热中的应用实战。 什么是缓存预热? 缓存预热是指在程序运行之前,将数据提前缓存在缓存中,以期在实际运行中能够更快地获取到需要的数据,从而提升程序的性能。 在使用Redis缓存时,由于Redis本身采用的是内存缓存,一旦Redis服务器重新启动或者出现其他异常情况,缓存就会被清空,导致下次请求需要重新从数据库或者其他来源获取数据,这个过程会消耗大量的时间和系统资源。因此,在应用Redis缓存时,使用缓存预热的技术就显得尤为重要。 如何实现Redis缓存预热? Redis的缓存预热可以通过以下几种方式实现: 2.1 预热方法一:手动预热 手动预热是指开发人员在项目部署或者Redis服务器启动之前,手动将需要缓存的数据加载到Redis中。这种方式简单明了,容易掌控,但需要开发人员投入大量时间,且不够灵活,难以适应复杂的业务场景。 2.2 预热方法二:定时预热 定时预热是指开发人员通过设置定时任务,周期性地将需要缓存的数据加载到Redis中。这种方式相对于手动预热在灵活性、自动化程度上有一定的提升,但需要注意定时任务的设置,避免任务执行时间过长,影响系统性能。 2.3 预热方法三:按需预热 按需预热是指在应用系统启动后,根据业务请求的情况,将需要缓存的数据加载到Redis中。这种方式相对于前两种方式更加灵活,可以根据实际情况调整预热策略,但需要对业务场景有较深的了解,才能实现最佳的预热效果。 实战:如何使用Redis实现缓存预热? 下面以一个简单的电商系统为例,介绍如何使用Redis实现缓存预热。 3.1 分析业务场景 假设电商系统需要展示热卖商品排行榜,需要预热的数据为商品销售量的排行榜,用于在系统启动后,快速加载排行榜数据。 3.2 实现缓存预热 在应用系统启动时,通过查询数据库获取商品销售量排行榜数据,将数据写入Redis中。代码如下: @Service public…
2024-12-01 阅读全文 →
FWQ
服务器教程
redis缓存存储Session原理机制
redis缓存存储Session原理机制 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《redis缓存存储Session原理机制》,涉及到存储、Redissession,有需要的可以收藏一下 基于 Redis 存储 Session 如果我们想将 session 数据保存到 redis 中,只要将 session 的存储引擎改成 redis 即可。 使用 redis 作为存储引擎的例子: 首先安装 redis 存储引擎的包 go get github.com/gin-contrib/sessions/redis // 初始化基于…
2024-12-01 阅读全文 →