作者文章

fwq

FWQ
服务器教程
Redis实现消息的发布订阅原理分析
Redis实现消息的发布订阅原理分析 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Redis实现消息的发布订阅原理分析》,聊聊订阅、发布、Redis消息,我们一起来看看吧! 一、什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 特点:Redis 客户端可以订阅任意数量的频道。 这就好比粉丝们关注了我,当我写完文章发布的时候,你们打开CSDN也会接收到我写的文章。此时,我就是发送者(pub);粉丝们就是订阅者(sub)。 结构图如下:发布者发送自己的消息到redis服务器,订阅者从redis服务器中获取发布者发布的消息 二、Redis的发布和订阅 为了方便后面讲解发布和订阅命令行的使用,我先用两张图简单的介绍redis实现发布和订阅的整体流程。 客户端可以订阅频道如下图: 当给这个频道发布消息后,消息就会发送给订阅的客户端,如下图: 三、redis 发布订阅常用命令 下表列出了 redis 发布订阅常用命令: 四、命令实战 在演示redis消息的发布和订阅之前,我们需要打开两个客户端,一个充当消息发布者,一个充当消息接受者。 1、基本使用…
2025-05-10 阅读全文 →
FWQ
服务器教程
解决Redis持久化之大数据服务暂停问题
解决Redis持久化之大数据服务暂停问题 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《解决Redis持久化之大数据服务暂停问题》,主要介绍了Redis,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!   Redis持久化是有两种方式:RDB和AOF   对这两种方式的官方文档的翻译请看:   http://latteye.com/2011/11/redis-persistence.html   RDB就是快照存储,比如“每1个小时对redis进行快照存储”。那么,   save这个参数就应该设置save 3600 1000 //前一次快照3600秒后,当有超过1000个key被改动的时候就进行一次快照更新RDB快照产生dump.rdb文件,当每到快照时间,更新文件。   AOF是存储所有的写操作,分两个步骤:fsync和rewritefsync是把内存中的写操作写入aof文件中rewrite是将写操作合并,比如set aa 1; set aa 2; 两个操作应该写成一个操作set aa 2;   如果数据量小的话,啥问题也没有   现在假设服务器是20G内存,而且服务器上仅仅只有跑redis一个占内存的进程,就是说redis最多可以跑20G物理内存现在压入13G的redis数据(可以使用phpredis循环压入,但是要注意设置php的运行内存大小,最好使用pipeline的方式,否则php出现内存不足的error)   尝试1,我们只使用RDB的方式当进行快照的时候(测试时候可以把快照间隔时间定成30秒或更短)top查看进程   26376 test 16 0 13.5g…
2025-05-10 阅读全文 →
FWQ
服务器教程
漏洞预警!腾讯云存储Redis如何构建安全防护
漏洞预警!腾讯云存储Redis如何构建安全防护 收藏 对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《漏洞预警!腾讯云存储Redis如何构建安全防护》,主要介绍了存储、腾讯云,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了! 近日,北京白帽汇安全团队(nosec.org)宣布,双11期间发现全网性的入侵事件:某团体利用Redis的“未经授权登陆”漏洞,对国内互联网服务器进行大规模的入侵。此次攻击事件已经导致至少10000台暴露Redisserver的服务器被入侵,占比达到Redis开放服务器的67%。在此次安全事件中,腾讯云安全团队第一时间为用户发送了漏洞提醒和漏洞修复建议。 Redis作为性能卓越的KV存储系统得到了广泛应用,所以影响范围比较大。黑客可通过执行脚本代码,或通过数据备份功能写入后门文件。如果Redis以root身份运行,黑客甚至可以绕过Linux安全机制,直接登录受害服务器,安全防御如同虚设。 截至目前,Redis官方网站并未对此提供补丁,至少目前为止看到利用的过程都是基于Redis提供的正常功能。如果入侵成功,不仅可以取得服务器上所有机密信息,甚至可以对数据进行恶意删除,给被入侵者带来巨额损失。 问题来了:这样的攻击应该如何防范? 黑客如何通过漏洞窃取信息? 黑客首先通过端口扫描器,对开放公网端口的服务器进行扫描。当发现了Redis的服务端口以后就尝试进行登录,如果碰巧该redis-server没有设置密码的话,就可以顺利的控制这个redis-server了;更进一步黑客还可以尝试将自己的密钥文件通过save命令存储到机器的ssh目录当中,如果等黑客完成了这一操作,那么你的这台机器就实实在在的沦为了一台肉机了;黑客甚至可能通过这台机器为起点攻破并且控制肉机所在网络的所有服务器,这对公司或者组织的损失将是无法估量的。 腾讯云存储Redis如何保障数据安全? 腾讯云存储Redis(CloudRedisStore)是兼容Redis协议的分布式缓存和存储服务。支持主从热备自动容灾,支持数据快照和Key粒度的数据管理及回档,用户可作为Key-Value数据库使用。 腾讯云存储Redis产品介绍 CRS系统将数据的存储和用户的接入分开,同一个用户的数据分布在多台机器上,从而突破单机内存容量的限制;同时,多个用户的数据,保存在同一台机器,通过一定的策略,隔离多个用户,避免用户之间相互影响。整个系统包括如下几部分: 在线存储系统:接入集群、存储集群和导入导出服务; 数据高可靠系统:主备同步模块、流水系统和冷备中心; 运维监控系统:日志中心和多维监控系统; 支持系统:任务中心、配置中心和路由系统; 云存储Redis技术架构图 腾讯云存储Redis通过内外网隔离机制,安全审计等方式,保障数据安全: 云存储Redis利用腾讯云统一的网络防火墙,将Redis的服务端口保护在云机房内部,这样就杜绝了黑客从外网进行端口扫描和恶意攻击的通道; 对于黑客购买腾讯云主机,企图从内网发起网络攻击的情况,我们在网络路由策略上进行了用户之间的强制隔离,防止用户访问到其他用户的Redis实例; 云存储Redis的接入层会进行统一的恶意命令安全审计和强密码校验,从而更加强化对用户的数据安全防护。 随着Redis成为越来越多企业的首选内存数据库解决方案,Redis的流行也带来一系列安全问题,其中存在的漏洞将会受到越来越多黑客的关注。重视Redis数据安全,规避运营风险,才能保障业务健康快速的发展。  
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis配置文件详解
Redis配置文件详解 收藏 来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《Redis配置文件详解》,介绍一下redis配置文件,希望对大家的知识积累有所帮助,助力实战开发! 如果认为Redis是一个key value存储, 可以使用它来代替MySQL;如果认为它是一个可以持久化的cache, 可能只是用它保存一些频繁访问的临时数据(代替Memcached);除此之外,还可以把Redis当做一个轻量级的消息队列使用,因为它内置就支持 list数据结构和PUB/SUB命令;还可以当做一个轻量级的分布式锁系统。Redis是REmote DIctionary Server的缩写,在Redis在官方网站的解释是: 代码如下: Redis is an open source, advanced key-value store. It is often referred to as a data structure…
2025-05-10 阅读全文 →
FWQ
服务器教程
redis列表类型_动力节点Java学院整理
redis列表类型_动力节点Java学院整理 收藏 本篇文章给大家分享《redis列表类型_动力节点Java学院整理》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。 据说60%的人使用redis看重的是redis中的list类型,那这个list有什么用呢???不用我说大家都明白,做队列使用呗,为什么用它呢,很简单呗,因为有了它我就不需要专门的MQ产品啦,比如说RabbitMQ,ActiveMQ等等。。。对吧。 一、实战 先我们还是看一下List列表给我们提供的方法。 这些方法还是稀里糊涂的有一些的,没关系,做队列使用的话,常用的也就四个:LPOP,LPUSH,RPOP,RPUSH,从这四个单词上面,你应该就明白这有点像数据结构中的“双端队列”,对吧,既然我可以在左边Pop或者Push,又可以在右边Pop或者Push,那这样的话,我又可以把List做成队列或者堆栈,哈哈,是不是很有意思,下面我举个例子:我向List的左边顺序的塞入10,20,30,40,50,然后从队列的另一头依次输出10,20,30,40,50。 对了,我就说一下在我们目前的项目中使用list的一些场景吧。 1. 由于项目中使用了大量的wcf,导致配置过多,维护和更新异常繁琐,基于这种情况,我们把wcf可以异步处理的所有请求都丢到了redis的List中去,这样下来之后,web站点的config配置清爽的不要不要的。 2. 还有一个业务就是我们做的淘宝订单催付,付款提醒,签收提醒,收货提醒 等等都是采用轮询List的方式,大大降低了代码复杂量。 好了,这个大概就是list的使用场景,下面我们来看下这是怎么实现的。 二、探索原理 源代码是在adlist.c中,如下所示。 是不是简单的一吊,如果你学过数据结构中的链表,我想你一看便懂: listNode      很明显这是一个node节点,可以看出它有一个prev指针和一个next指针,分别指向节点的前驱和后继,然后还有一个void* 这个类型的value,
2025-05-10 阅读全文 →
FWQ
服务器教程
Redis:快速构建实时统计系统
Redis:快速构建实时统计系统 珍惜时间,勤奋学习!今天给大家带来《Redis:快速构建实时统计系统》,正文内容主要涉及到等等,如果你正在学习数据库,或者是对数据库有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家! Redis(Remote Dictionary Server)是一种基于内存的数据结构存储系统,具有轻便、高效、易用等特点。它不仅是一个高速的键值对存储数据库,而且提供了各种灵活的数据结构,如字符串、散列、列表、集合和有序集合,可以支持各种场景的应用。除此之外,Redis还拥有强大的实时计算能力,可以快速构建实时统计系统。 在实际应用场景中,常常需要构建实时统计系统。例如,电商平台需要实时统计销售数据、运营数据、用户数据,以便优化运营策略。在这种情况下,传统的关系型数据库已经不能满足实时性要求,所以Redis被广泛应用于实时计算领域。 本文将通过代码示例,介绍如何使用Redis构建一个简单的实时统计系统。 首先,我们需要将数据存入Redis中。考虑到我们需要统计用户访问的次数,可以将用户的访问次数记录在一个set集合中,其中每个元素表示每个用户的访问计数器。 import redis r = redis.Redis(host='localhost', port=6379, db=0) def record_user_access(user_id): r.sadd('users', user_id) r.incr('user:%s:access_count' % user_id) 在上面的代码中,我们使用Redis的SADD命令将用户ID添加到一个集合中,并使用INCR命令增加用户访问计数器。接下来,我们可以使用Redis的SCARD命令获取用户数量和SMEMBERS命令获取所有用户的ID。 def get_user_count(): user_count = r.scard('users')…
2025-05-10 阅读全文 →
FWQ
服务器教程
redis-cli -p 6379 info命令详解
redis-cli -p 6379 info命令详解 收藏 亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《redis-cli -p 6379 info命令详解》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下info、redis-cli-p,希望所有认真读完的童鞋们,都有实质性的提高。 Server 服务器基本信息 # redis版本号 redis_version:5.0.3 # redis源码包git信息 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:da69b07a37c06dc8 # 运行模式(“独立”,“哨兵”或“集群”) redis_mode:standalone # 操作系统信息 os:Linux 3.10.0-514.el7.x86_64 x86_64 #…
2025-05-10 阅读全文 →
FWQ
服务器教程
如何使用Redis和Lua开发实时消息订阅功能
如何使用Redis和Lua开发实时消息订阅功能 目前golang学习网上已经有很多关于数据库的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《如何使用Redis和Lua开发实时消息订阅功能》,也希望能帮助到大家,如果阅读完后真的对你学习数据库有帮助,欢迎动动手指,评论留言并分享~ 如何使用Redis和Lua开发实时消息订阅功能 随着互联网的快速发展,实时消息订阅功能在Web应用中的重要性日益凸显。无论是即时聊天应用、在线协作平台还是实时股票行情等,都需要实时更新消息,以保证用户能够及时获取最新的信息。在开发这类实时功能时,Redis和Lua是两个非常有力的工具。Redis是一种高性能的键值存储数据库,而Lua是一种高效的脚本语言。通过Redis和Lua的结合使用,我们可以开发出高效、稳定且易于扩展的实时消息订阅功能。 本文将详细介绍如何使用Redis和Lua开发实时消息订阅功能,并给出具体的代码示例。 确定需求和数据结构 在开始开发之前,我们需要明确我们的需求和数据结构。假设我们需要实现一个简单的聊天室应用,用户可以发送消息,并实时收到所有其他用户发送的消息。我们需要使用Redis的发布/订阅功能来实现实时消息推送。 我们可以使用以下数据结构来存储聊天室的消息: 键名:chatroom:<room_id> 值:聊天消息的列表,使用JSON格式存储 编写发布脚本 我们首先需要编写一个Lua脚本来处理用户发送的消息,并将消息发布到Redis的指定频道。以下是一个示例的发布脚本: local room_id = KEYS[1] local user_id = KEYS[2] local message = ARGV[1] local chatroom_key = "chatroom:"…
2025-05-10 阅读全文 →
FWQ
服务器教程
浅谈Redis中的全局命令
浅谈Redis中的全局命令 收藏 知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个数据库开发实战,手把手教大家学习《浅谈Redis中的全局命令》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
2025-05-10 阅读全文 →
FWQ
服务器教程
redis中5种数据基础查询命令
redis中5种数据基础查询命令 收藏 数据库小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《redis中5种数据基础查询命令》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发! (一)key查询 1.查询所有key KEY * 2.查询包含某个字符的key KEY *字符* 例如查询key包含字符chen可用 KEY *chen* 3.查询key的类型 TYPE key 4.查询某个键是否存在 EXISTS key (二)5种数据类型查询命令 1.string查询 1.1 查询string类型键的值 GET string_key 1.2查询string类型键的长度 STRLEN string_key…
2025-05-10 阅读全文 →