在安装 Redis 哨兵之前,需要先安装 Redis 服务。可以参考 Redis 官方文档或者本站的 Redis 安装教程进行安装。
有很长一段时间没有做PHP开发了,最近有做PHP开发的小伙伴在个人微信公众号后台留言,能够分享一些PHP有关的面试题。于是给安排上。
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 Redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
当我们在学习分布式系统的过程中,可能会遇到很多类似集群的案例,例如在Hadoop生态圈中集群就是广泛应用的,因为可以对硬件的低要求。但是集群是什么呢?
无论哪种中间件的搭建,正常主从模式搭建需要搭建在两台不同的服务器上才是正规的主从搭建模式。因为由于资源的限制,今天来演示一下在同一台服务器上,基于端口不一致搭建Redis的单机主从模式。
复制分为连接建立,数据同步(sync)和命令传播(command propagate)三个阶段
里面内容有很多,使用cat命令去除一些没用的内容后生成到redis-6349.conf中
Redis有三种集群模式,分别是主从、“哨兵”、Cluster集群模式,今天先来聊一下主从模式
本文实例讲述了CentoS6.5环境下redis4.0.1(stable)安装和主从复制配置方法。分享给大家供大家参考,具体如下:
在大型架构中,redis往往不可能只是单机版本,因为单机redis的架构风险太大了,因为一旦高并发,redis的压力将会非常大,一旦发生了宕机,那将会发生非常大的问题,这是不允许的,所以主从架构至关重要了,那么本文就是来演示如果搭建Redis主从架构。
接着上一篇,前面两篇我总结了Redis安装和C#中如何使用redis 。接下来讲讲Redis 的主从复制以及主从复制的架构下C#中如何调用。
之前的某一天早晨,在查看线上报警的时候,发现下面这样一个场景,Redis复制报错,一直提示加载RDB不成功,记录一下这个案例,希望有所帮助吧。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
断断续续,Redis教程总算告一段落了,最后一篇其实很早就写好了,一直忘了发,现在总算凑齐了,发出来,做成一个完整的教程,可能还会有遗漏的点,遇到了再慢慢补上。下面是本系列的一个完整索引,方便小伙伴们查看,感谢小伙伴们长期的支持。
配置关闭:主节点产生的数据无论大小都会及时的发送给从节点。redis默认关闭此配置,以保障较小的主从延迟。当然,这需要主从间保持较好的网络状况。
大多数教程都是用的这个脚本直接实现的https://github.com/Ridter/redis-rce。不知道大家在使用脚本的时候有没有注意到一些限制。
1.Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。
在介绍高可用架构的方案之前,先说一下什么是高可用架构,高可用架构应具备但不限于以下特征:
尽管 Redis 的性能很好,但是有时候依旧满足不了应用的需要,比如过多的用户进入主页,导致 Redis 被频繁访问,此时就存在大量的读操作。显然单靠一台 Redis 服务器是完全不够用的 当主服务器不能正常工作的时候,我们希望从服务器代替原来的主服务器,作为灾备,以保证系统可以继续正常的工作 。
脱产班Linux周末内容 日期 主题 内容 1 Linux入门 "计算机硬件、操作系统概述 物理服务器、机房、云服务器 GNU/GPL、开源协议 Linux发行版 VMware虚拟机安装CentOS 7.x Xshell优化 ssh远程连接详解 Linux文件目录结构详解 Linux绝对相对路径 Linux环境变量、系统/用户配置文件 " 2 常用命令与服务 "Linux开发常用命令详解 目录管理 pwd、cd、tree、mkdir、touch、ls、cp、mv、rm 文本查看 echo、cat、more、less、head、tail、grep 三剑客 grep、sed、awk 搜索查找 find 文本编辑 vim/vi快捷键技巧 压缩工具zip、unzip、tar、gzip、xz 系统资源管理ps、pstree、top、iotop、free、fdisk、ifconfig、df
Redis的作者是Salvatore Sanfilippo(网名为antirez),他在2009年开发完成并开源了Redis。
·主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
接着上篇文章继续讲解,前面一个linux服务器已经有了8001和8004节点,现在继续新增两个linux服务器,并且分别加上两个节点。
在正式部署前,你可以先阅读前置准备,对部署过程中用到的docker、redis操作和配置有一个理解,以防在自己电脑上复现时出错。 我们将在一台windows10机器上运行多个docker容器,配置Redis主从集群。
Redis的性能很好,但在某些情况下还是不能满足我们的需求,比如过多的用户进入主页,导致Redis被频繁访问,此时就存在大量的读操作。在一些秒杀场景中,一瞬间有成千上万的读请求到达Redis服务器,显然单靠一台Redis服务器是不够的。一些服务网站对安全性有较高的要求,当主服务器不能工作的时候,需要从服务器代替原来的主服务器,作为灾备,以保证系统可以正常运行。因此更多的时候我们希望读写分离,读写分离的前提是读操作远远比写操作频繁的多,如果把数据存放在多台服务器上那么就可以从多台服务器上读取数据,从而消除了单台服务器的压力,读写分离的技术已经广泛用于数据库中。
要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/Zookeeper这些的话,你就会明白一般分布式要求基数个节点,这样便于选举(少数服从多数的原则)。
举例: 例如,假设有一个应用程序叫做"example.exe",它依赖于名为"example.dll"的动态链接库。而"example.exe"在加载"example.dll"时没有使用绝对路径,而是仅仅指定了DLL的名称。攻击者可以将恶意的"example.dll"文件放置在与"example.exe"相同的目录下,当"example.exe"启动时,系统会先在当前目录中查找"example.dll"文件,如果找到,就会加载该文件并执行其中的恶意代码。 DLL劫持可以函数转发劫持也可以往完整DLL插入恶意代码,这里用的函数转发劫持,大致流程如下图所示: https://kiwings.github.io/2019/04/04/th-DLL%E5%8A%AB%E6%8C%81/ 2.2 劫持dbghelp.dll redis-server.exe在执行bgsave时,会先在应用目录查找dbghelp.dll,找不到再去system32目录下找: 而不管redis的权限是Administrator还是普通用户或者Network Service,它对自己的应用目录一定有写文件的权限,我们可以通过Redis的主从复制在应用目录里写入恶意DLL。 2.3 函数转发劫持 对DLL进行函数转发劫持需要导出原本DLL的函数和地址,以保证程序通过恶意DLL调用这些函数时不影响正常功能,DLL的导出函数一般比较多,用Aheadlib之类的工具可以自动化处理。 我这里用的是DLLHijacker,它会自动处理导出表并生成一个VS2019的项目,但这个python脚本有几个bug: https://github.com/kiwings/DLLHijacker (1) VS项目中文乱码: 修复:几个写文件的地方添加 encoding="utf-8"。 (2) 函数导出表有匿名函数的时候,会导致以下报错 [-]Error occur: 'NoneType' object has no attribute 'decode 修复:在几个for循环里添加函数名是否为空的判断可以解决这个问题。 (3) 生成C/C++代码时,没有使用目标DLL的绝对路径,只是用了DLL的名字填充LoadLibrary(),这是一个很严重的bug,会导致函数转发失败、Redis的功能受到影响从而只能劫持一次: 修复:我改成了根据输入的目标DLL路径自动填充。 如果没有使用原DLL的绝对路径,在Process Monitor可以看到,只会调用应用程序目录里的恶意DLL,并没有调用原本的system32下的dbghelp.dll: 从而redis的功能受到影响,导致redis的bgsave只能触发一次DLL调用,第二次bgsave的进程会被阻塞从而无法调用DLL,并且Redis关闭后将无法启动: 这也是网上部分师傅的文章写”不会影响redis运行 但会无法重启“的原因,因为他们也是用的DLLHijacker,并且没有发现有这个坑,这不仅会影响业务,而且只能劫持一次: 正常的DLL劫持不会影响程序的功能,可以劫持很多次,假如我第一次劫持想上线CS但是没有成功,那对面可能不出网,那我可能会再劫持打一个MSF的反向shell,都没成功我也可以继续尝试MSF盲打命令: 正常的DLL转发劫持如下,调用完应用程序目录里的恶意DLL后会调用原DLL: 0x03 漏洞利用 3.1 工具使用 工具下载地址: https://github.com/P4r4d1se/dll_hijack 如是是Windows 64位的Redis DLL劫持的话,可以直接用里面的VS2022版的dbghelp项目。 其他要用我修改后的DllHijacker.py和目标DLL路径生成VS项目: python3 DLLHijacker.py C:\Windows\System32\dbghelp.dll 下载安装VS2022,只用勾C++桌面开发: https://visualstudio.microsoft.com/zh-hans/downloads 打开生成目录里的sln文件,因为原本是VS2019的项目所以会提醒你升级,选确定,不然得另外安装v142的编译组件才能编译VS2019的项目: 打开后在源文件的dllmain.app,修改里面的shellocde就行,其他不用改: 3.2 出网——Cobalt Strike 如果Redis主机直接出网,或者能通其他已经上线CS的出网主机,那直接上CS是最好的选择,CS生成C语言的payload: 源文件的dllmain.app里把payload替换进去,然后选Release x64,生成——生成解决方案: 然后主从复制将dbghelp.dll写过去并bg
通过《网络数据采集和解析》一文,我们已经知道了如何从指定的页面中抓取数据,以及如何保存抓取的结果,但是我们没有考虑过这么一种情况,就是我们可能需要从已经抓取过的页面中提取出更多的数据,重新去下载这些页面对于规模不大的网站倒是问题也不大,但是如果能够把这些页面缓存起来,对应用的性能会有明显的改善。
文章目录 1. Redis主从复制 1.1. 作用 1.2. 搭建前的准备 1.3. 主从节点关系 1.4. 查看复制信息 info replication 1.5. 建立复制 1.5.1. 动态配置 1.5.2. 配置文件配置 1.5.3. 操作 1.6. 断开复制 1.7. 切主 1.7.1. 执行流程 1.7.2. 提示 1.8. 安全性 1.9. 只读 1.10. 传输延迟 1.10.1. 提示 1.11. 一主一从 1.12. 一主多从 1.13. 树状主从结构 Redis主从复制 本章介绍
本篇只谈安装,后续会深入讲解Redis,比如它的内存管理,快照,订阅等待。针对不同的用户,Redis有Windows和Linux两种环境安装, 官网上下的是Statble版是Linux,大家一定要注意。由于本人做本地端,所以以下谈的是Windows安装。
工作中有时会遇到需要把原Redis集群下线,迁移到另一个新的Redis集群的需求(如机房迁移,Redis上云等原因)。此时原Redis中的数据需要如何操作才可顺利迁移到一个新的Redis集群呢? 本节简单介绍相关方法及一些工具;
👆点击“博文视点Broadview”,获取更多书讯 Redis是开源的key-value存储系统,可作为数据库、缓存、消息组件。 Redis的作者是Salvatore Sanfilippo(网名为antirez),他在2009年开发完成并开源了Redis。 Redis由于性能极高、功能强大,迅速在业界流行,现已成为高并发系统中最常用的组件之一。 Redis提供了多种类型的数据结构,如字符串(String)、散列(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。 Red
在分布式系统中,为了解决单点问题,通常会把数据复制多个副本部署到其他节点,以便满足故障恢复和负载均衡等需求。redis也是如此,它为我们提供了复制功能,实现了相同数据的多个副本。复制功能是redis高可用的基础,不管是哪种集群方案,都是基于底层的主从复制原理进行的。 配置redis主从复制 在redis的主从复制中,和其他服务一样,都有master和slave两个角色,默认每个redis节点都是主节点,每个从节点也只能有一个主节点,而主节点可以配置多个从节点。
还记得Redis使用场景、缓存穿透、缓存击穿、缓存雪崩、Redis持久化、数据过期策略、数据淘汰策略吗?如果忘记可以到这里重新温习, Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略。
Redis 作为一门非关系型数据库,其复制功能和关系型数据库(MySQL)来说,功能其实都是差不多,无外乎就是实现的原理不同。Redis 的复制功能也是相对于其他的内存性数据库(memcached)所具备特有的功能。
基于Redis主从复制的机制,可以完美无损的将文件同步到从节点。这就使得它可以轻易实现以上任何一种漏洞利用方式,而且存在着更多的可能性等待被探索。
首先有个概念,并发和并行是不一样的。并行是指同一时间做很多事情,并发是指同一时间有多个请求。Redis的高并发指的是指很快地处理并发过来的请求,具体实现主要是依靠Linux操作系统。
在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性、可靠性要求较高,则需要引入Redis的集群方案。虽然现在各大云平台有提供缓存服务可以直接使用,但了解一下其背后的实现与原理总还是有些必要(比如面试), 本文就一起来学习一下Redis的几种集群方案。
描述:Redis 通过监听一个 TCP 端口或者 Unix socket(/var/run/redis/redis-server.sock)的方式来接收来自客户端的连接,当一个连接建立后Redis 内部会进行以下一些操作:
通过Nginx代理到某一个服务器上时,会造成在8080或者8081的Tomcat服务器上登录,Tomcat服务器会给客户端返回一个JSessionID的Cookie值,客户端再次请求时,会携带这个JSessionID,并且会通过JSessionID去Tomcat中找Session,如果找到Session,直接使用,如果找不到,重新创建一个Session,并且需要返回一个全新的JSessionID。
(本文改编自生活真实案例,如有类同,绝不是巧合!) 端午节,烟哥正在一边愉快的学习…. 突然,微信一阵抖动。原来是老刘呼唤烟哥!善良的烟哥本以为人家是要约我出去玩!然而,打开微信一看,出现下图聊天记录
这两天请了两天假,出去看了看外面的招聘市场。两天时间差不多面了10家公司,成功拿到7家offer,这里总结一下,个人在面试中遇到的一些问题,不是很全,有一些忘记了。每道题从题目看很简单,在实际中都是一步一步步的深度挖掘,这里就没有总结的很细。这里面的公司有电商、游戏、大数据类型的公司。
Redis的配置主要放置在redis.conf,可以通过修改配置文件实现Redis许多特性,比如复制,持久化,集群等。
redis是C语言开发的,安装redis需要将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc。
👨🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。 ☠️每日毒鸡汤:一件事你犹豫去不去做,那就是该立即动身做的。 1. Redis持久化Redis中的数据一般存储在内存中,也可以使用持久化的方式将数据写到硬盘中。Redis提供了
概述 穿透、回种、熔断 缓存中间件对比 Mencache和Redis区别 主从:mysql复制备份 分片:将大数据打碎,分配到不同物理机节点的分区方案 redis3.0之后支持分片 选型:普
Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。
领取专属 10元无门槛券
手把手带您无忧上云