草庐IT

Redis-server

全部标签

Redis(主从复制、哨兵模式、集群)概述及部署

Redis(主从复制、哨兵模式、集群)概述及部署前言一、Redis主从复制Ⅰ、Redis主从复制的概念Ⅱ、Redis主从复制的作用Ⅲ、Redis主从复制的流程Ⅳ、Redis主从复制的搭建二、Redis哨兵模式Ⅰ、哨兵模式的原理Ⅱ、哨兵模式的作用Ⅲ、哨兵模式的结构Ⅳ、故障转移机制Ⅴ、搭建Redis哨兵模式三、Redis集群模式Ⅰ、集群的作用Ⅱ、Redis集群的数据分片Ⅲ、Redis集群工作模式Ⅳ、搭建Redis集群模式前言一、Redis主从复制Ⅰ、Redis主从复制的概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Sl

对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型

开始之前:设计某数据库表结构的过程中,收到了一个另外令人感到意外的建议:对于字符型数据类型,数据库里统一使用varchar(max)来存储,也就是所有字符数据类型都用varchar(max)字段类型,理由是ORM写代码方便?是的,你没有听错,为了ORM中写代码方便,所以建议数据库中字符型字段全部使用varchar(max)数据类型。这是中了ORM多深的毒!!!对于这个问题,真的非常非常非常意外,有人竟然提出这种“建议”,我第一反应是想反问:为啥你上下班通勤,开个小轿车,而不是开个载重80吨的重型卡车?重型卡车想对小轿车又结实,又能走烂路,又能更多地载重,牵引力又大,空间也大,双肩包,电脑、钢筋

对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型

开始之前:设计某数据库表结构的过程中,收到了一个另外令人感到意外的建议:对于字符型数据类型,数据库里统一使用varchar(max)来存储,也就是所有字符数据类型都用varchar(max)字段类型,理由是ORM写代码方便?是的,你没有听错,为了ORM中写代码方便,所以建议数据库中字符型字段全部使用varchar(max)数据类型。这是中了ORM多深的毒!!!对于这个问题,真的非常非常非常意外,有人竟然提出这种“建议”,我第一反应是想反问:为啥你上下班通勤,开个小轿车,而不是开个载重80吨的重型卡车?重型卡车想对小轿车又结实,又能走烂路,又能更多地载重,牵引力又大,空间也大,双肩包,电脑、钢筋

redis + AOP + 自定义注解实现接口限流

限流介绍限流(ratelimiting)​是指在一定时间内,对某些资源的访问次数进行限制,以避免资源被滥用或过度消耗。限流可以防止服务器崩溃、保证用户体验、提高系统可用性。限流的方法有很多种,常见的有以下几种:漏桶算法:​ 漏桶算法通过一个固定大小的漏桶来模拟流量,当流量进入漏桶时,会以恒定的速率从漏桶中流出。如果流量超过漏桶的容量,则会被丢弃。令牌桶算法:​ 令牌桶算法通过一个固定大小的令牌桶来模拟流量,当流量进入令牌桶时,会从令牌桶中取出一个令牌。如果令牌桶中没有令牌,则会拒绝该流量。滑动窗口算法:​ 滑动窗口算法通过一个固定大小的滑动窗口来模拟流量,当流量进入滑动窗口时,会统计窗口内流量

redis + AOP + 自定义注解实现接口限流

限流介绍限流(ratelimiting)​是指在一定时间内,对某些资源的访问次数进行限制,以避免资源被滥用或过度消耗。限流可以防止服务器崩溃、保证用户体验、提高系统可用性。限流的方法有很多种,常见的有以下几种:漏桶算法:​ 漏桶算法通过一个固定大小的漏桶来模拟流量,当流量进入漏桶时,会以恒定的速率从漏桶中流出。如果流量超过漏桶的容量,则会被丢弃。令牌桶算法:​ 令牌桶算法通过一个固定大小的令牌桶来模拟流量,当流量进入令牌桶时,会从令牌桶中取出一个令牌。如果令牌桶中没有令牌,则会拒绝该流量。滑动窗口算法:​ 滑动窗口算法通过一个固定大小的滑动窗口来模拟流量,当流量进入滑动窗口时,会统计窗口内流量

Redis 数据一致性

概述当我们在使用缓存时,如果发生数据变更,那么你需要同时操作缓存和数据库,而它们两个又分属不同的系统,因此无法做到同时操作成功或失败,因此在并发读写下很可能出现缓存与数据库数据不一致的情况理论上可以通过分布式事务保证同时操作成功或失败,但这会影响系统性能,一般很少使用。虽然没办法做到缓存和数据库强一致,但我们可以让他们的数据尽可能在绝大部分时间内保持一致,并保证最终是一致的缓存更新设计一般来说都是采用删除缓存的方式更新缓存,这就涉及到先删除缓存还是先更新数据库的顺序问题了1.先删除缓存,后更新数据库先删除缓存,后更新数据库,如果数据库没有更新成功,下次读缓存发现不存在,则从数据库读取,并重建缓

ServiceStack.Redis系列破解

ServiceStack.Redis免费版有个每小时6000次访问限制,网上目前的破解方式都是dnspy修改源码或者Github上下载源码修改,这样的方式不是不好,主要是不方便NUGET版本管理和更新。 反编译看了下注册逻辑,发现很简单就是LicenseKey类:publicclassLicenseKey{publicstringRef{get;set;}publicstringName{get;set;}publicLicenseTypeType{get;set;}publiclongMeta{get;set;}publicstringHash{get;set;}publicDateTime

php - 相当于 $_SERVER ['DOCUMENT_ROOT' ] 当 cron 调用脚本时会起作用吗?

我正在使用$_SERVER['DOCUMENT_ROOT']作为我的包含路径,这样文件就会知道它们从哪里运行(即它们是在运行还是在暂存)并且它工作正常,除了由cron运行的脚本外,我必须在其中对路径进行硬编码。我可以使用另一个可以在cron和浏览器中使用的变量吗? 最佳答案 当通过cron运行PHP脚本时,我假设它是在CLI的上下文中执行的,而不是在Web服务器中执行的。在从CLI执行PHP的情况下,$_SERVER['DOCUMENT_ROOT']未正确填充。您可以使用以下代码解决此问题:if($_SERVER['DOCUMENT

如何将一行数据合并到SQL Server中的一列

我有这样的触发因素:altertriggernewTriggerontable2afterinsertasbegindeclare@rowDatanvarchar(max)ifexists(select*frominserted)beginSet@rowData=(select*frominserted)endinsertintotable1(rowData,date)values(@rowData,getdate())end我想在插入Table2之后,将记录和日期插入到Table1中,但我无法将行数据合并为一列!------------------table2----------------

Server Name Indication(SNI),HTTP/TLS握手过程解析

ServerNameIndication(SNI)是一种TLS扩展,用于在TLS握手过程中传递服务器的域名信息。在未使用SNI之前,客户端在建立TLS连接时只能发送单个IP地址,并且服务器无法知道客户端请求的具体域名。这导致服务器需要使用默认证书进行握手,无法正确选择合适的证书。使用SNI扩展后,客户端在发送ClientHello消息时会包含所请求的服务器的域名。服务器根据该域名来选择对应的证书进行握手,从而实现了多个域名共享同一个IP地址并使用不同证书的能力。SNI对于虚拟主机或者CDN等场景特别有用,因为这些场景下,多个网站可能共享同一个IP地址。通过使用SNI,服务器能够正确地选择与域名