Redis
文章平均质量分 72
Keeling1720
这个作者很懒,什么都没留下…
展开
-
Redis解决分布式锁
文章目录Redis解决分布式锁什么是分布式锁上锁的解决方案Redis解决分布式锁上锁实战Redis解决分布式锁什么是分布式锁随着业务发展的需要,原先单机部署的系统现在已经演化成了分布式集群系统。即,原先我们用一个服务器就啥也扔进去了,啥也不考虑,反正就一台服务器,啥都在里面。但现在,我们更多的可能是使用Nginx做反向代理,将访问负载均衡到多条服务器中去。但是!正因如此,我们的分布式的系统多线程和多进程分布在了不同的机器上,此时对某台服务器上锁,将使原先单击部署情况下的并发控制锁策略失效,说到这里,大原创 2021-12-04 22:19:17 · 1145 阅读 · 0 评论 -
Redis解决缓存雪崩问题
文章目录Redis解决缓存雪崩问题什么是缓存雪崩怎么解决Redis解决缓存雪崩问题什么是缓存雪崩缓存雪崩:在极少时间内,查询大量key的批量过期,导致不停访问数据库,加大服务器的压力,最终服务器奔溃的情况。(他跟缓存击穿的区别是,他是大量key的批量过期;而缓存击穿是热门key过期后被访问量瞬时增大)怎么解决1、构建多级缓存架构:nginx缓存+redis缓存+其他缓存(ehcache等)2、使用锁或队列:用加锁或者队列的方式来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并原创 2021-12-04 10:14:33 · 1522 阅读 · 0 评论 -
Redis解决缓存击穿问题
文章目录Redis解决缓存击穿问题什么是缓存击穿解决方案Redis解决缓存击穿问题什么是缓存击穿缓存击穿:数据库的压力瞬时增大,且redis中并无大量的key过期,redis正常运行的情况下,数据库奔溃了。造成原因:redis的某个key过期了,但却有大量的访问恰好需要用到这个key。解决方案某些key可能在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑 缓存被“击穿”的问题。解决方案:1、预先设置热门数据:在redis高峰访问之前,把一些热门数据提前存入到red原创 2021-12-03 11:13:56 · 1149 阅读 · 0 评论 -
Redis解决缓存穿透问题
文章目录Redis解决缓存穿透问题什么是缓存穿透解决方法Redis解决缓存穿透问题什么是缓存穿透请看图,当我们用户访问我们的服务器的时候,服务器一般会先访问我们的redis,查看我们的缓存是否有需要的数据,如果没有我们再去访问数据库。如果我们的用户数量足够多,且在某个时间段内突然都向我们的应用服务器发送请求,此时我们的应用服务器压力就会变大,然后他会不停地去查Redis的缓存数据,然后发现,诶!怎么没数据,即redis的命中率降低。此时应用服务器就会疯狂地访问我们的数据库请求数据,我们的数据库顶不原创 2021-12-03 10:59:20 · 2417 阅读 · 0 评论 -
Redis集群超详细教程及其实战(附带各种问题解决)
文章目录Redis集群超详细教程及其实战简介搭建Redis集群实战槽(Slot)把玩集群故障恢复集群的Jedis开发Redis集群超详细教程及其实战简介Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的 N分之一 。Redis集群通过分区(partition)来提供一定程度的可用性(availability):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。Redis3.0开始,便提供了无中心化集群原创 2021-12-01 00:09:02 · 667 阅读 · 0 评论 -
Redis主从复制超详细好用搭建方案
Redis主从复制最佳搭建方案为了方便学习,我们将本该搭建在三台不同服务器上的Redis放在一台虚拟机上通过启动三个不同端口号的Redis运行。这里我们以简单的一主二仆为例,并假设我们所有服务器的密码都是password123。首先,我们在根目录下创建myredis文件夹cd /mkdir myredis然后复制redis.conf文件到 /myredis 文件夹。cp /etc/redis.conf /myredis/redis.conf注意:实际操作前两个步骤不需要做,直接修改每原创 2021-11-30 12:10:19 · 822 阅读 · 0 评论 -
Redis主从复制——一主二仆、薪火相传、反客为主和哨兵模式
文章目录Redis主从复制——常用3招1. 一主二仆2. 薪火相传3. 反客为主Redis主从复制——常用3招1. 一主二仆假设现在我们6379端口的redis服务器是主服务器,6380端口和6381端口的redis服务器为6379服务器的从服务器。主从复制中,如果从机中途宕机后重启,数据是否还会同步?答:这个要分两种情况来讲:1、如果我们的连接不是直接在配置文件中写好的,而是启动6380端口和6381端口后使用SLAVEOF 127.0.0.1 6379命令,让他成为6379服务器的从机的话。原创 2021-11-28 00:18:15 · 1423 阅读 · 0 评论 -
Redis主从复制的复制原理
Redis主从复制的复制原理主从复制数据同步的底层是:Slave 成功连接Master后,会发送一个sync命令。Master借到命令后,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master将传送整个数据文件到Slave,已完成一次完全同步。全量复制:Slave 在接收到数据库文件数据后,将其存盘并加载到内存中。增量复制:Master 继续将新的所有收集到的修改命令依次传给 Slave 完成同步。但是只要是重新连接Master, 一次完全同步(全量复原创 2021-11-27 23:50:39 · 230 阅读 · 0 评论 -
redis配置主从服务器后,总是显示master_link_status:down的解决方法
redis配置主从服务器后,总是显示master_link_status:down的解决方法解决问题一、你的主机设置了密码,那么我们需要在从机里面写上你主机的密码所以我们的redis6380.conf 和 redis6381.conf 文件的内容应该如下:(这里我顺便把主机连上,上面的SLAVEOF 127.0.0.1 6379就不需要再执行了。)redis6380.confinclude /myredis/redis.confpidfile /var/run/redis_6380.pidpor原创 2021-11-27 11:21:21 · 8729 阅读 · 0 评论 -
Redis的主从复制
文章目录Redis的主从复制1. 简介2. 主从复制实际操作redis配置主从服务器后,总是显示master_link_status:down的解决方法Redis的主从复制1. 简介什么叫Redis的主从复制:主机数据更新后根据配置和策略,自动同步到备机的 master/slaver 机制, Master(主机) 以写为主, Slaver(从机) 以读为主。使用主从复制的好处:1、读写分离2、容灾快速恢复2. 主从复制实际操作步骤1、在根目录下创建myredis文件夹cd /mkdi原创 2021-11-27 11:20:58 · 504 阅读 · 0 评论 -
Redis持久化操作
文章目录Redis持久化操作RDBAOFAOF文件异常恢复总结Redis持久化操作Redis提供了两种持久化的方式:1、RDB(Redis DataBase)2、AOF(Append Only File)RDBRDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话将的 Snapshot 快照,他恢复时是将快照文件直接读到内存里。使用RDB的优势:1、适合大规模的数据恢复2、对数据完整性和一致性要求不高,更适合使用3、节省磁盘空间4、恢复速度快使用RDB的劣势:1、For原创 2021-11-27 09:44:21 · 434 阅读 · 0 评论 -
SpringBoot使用LUA解决Redis库存遗留问题
SpringBoot使用LUA解决Redis库存遗留问题前面,我的博客提到了怎么用Redis的乐观锁解决超卖问题。但是,使用乐观锁其实,有一个缺点,就是我们假设现在有2000次请求,并发数为200,此时的库存如果比较大的话,比如是500,那么,我们最后会发现,这2000次请求最后会有很多次因为乐观锁机制的影响导致的抢购失败。这个问题要解决,我们可以使用我们的LUA。简单介绍一下,LUA是一个小巧的脚本语言,他不适合作为开发独立应用程序的语言,但是却可以作为我们嵌入式的脚本语言。很多应用程序、游戏使用L原创 2021-11-25 20:32:52 · 1818 阅读 · 8 评论 -
Redis乐观锁解决超卖问题
文章目录Redis乐观锁解决超卖问题CentOS7下载ab工具Windows下载ab工具Redis乐观锁解决超卖问题情景假设:现在华为最新手机在做活动,双十二 00:00 准时前十名抢购的用户可以1元秒杀。而数据库对这个秒杀的动作呢,需要作出两个动作:1、库存减12、记录秒杀成功的用户id话不多说,我们直接用代码来演示:这里直接给出控制器方法。 @PostMapping("/secKill") public void TestSecKill(){ /**原创 2021-11-25 16:53:13 · 835 阅读 · 1 评论 -
Redis乐观锁演示
Redis乐观锁演示在执行MULTI之前,先执行WATCH key1 key2 … keyn,以此可以监听一个或多个key,如果在事务之前这些个key被其他命令所改动,那么该事务将被打断。其实就是给这些key上了乐观锁。注意:WATCH并不是对某个key使用一次就终生使用的,他的有效期只有在使用WATCH后执行的第一个事务中生效。在该事务执行了EXEC或者DISCARD后,WATCH就消失了。很拗口的话,简单说怎么用吧,就是每次执行事务前,如果我们需要给某个key或者某些key上乐观锁,那么我们就要W原创 2021-11-25 10:45:38 · 931 阅读 · 0 评论 -
Redis事务冲突问题(乐观锁和悲观锁)
文章目录Redis事务冲突问题3.1 悲观锁3.2 乐观锁Redis事务冲突问题场景:你的 老婆和子女 同时拿你的淘宝去参加双十一抢购。老婆买了8k的包,儿子买了5k的电脑,女儿买了1k的化妆品。假设,你的账户只有10k。此时,我们的事务对三次请求都进行判断,发现三个请求都小于10k,此时执行的话,显然是不正确的。如下:怎么办呢?这里,我们就要引出我们的乐观锁和悲观锁了。3.1 悲观锁悲观锁:每次取数据的时候都认为别人会修改这个数据,所以每次取数据我们都将该数据上锁,如此,当别人也想取这个数据原创 2021-11-24 23:58:30 · 592 阅读 · 0 评论 -
Redis的事务操作
文章目录1. Redis事务的介绍2. Redis进行事务操作的三个命令1. Redis事务的介绍Redis的事务操作跟我们之前学的mysql的事务操作不一样。mysql的事务:他是数据库操作的最基本单元,逻辑上一组操作,要么都成功,要么都失败。举个例子,现在A给B转账100元,这里数据库需要分别让A的money减100,让B的money加100。此时,如果A减-100后,服务器突然宕机了,那么数据库将进行回滚,让A的100块钱不会因此不翼而飞。只有当A的money - 100, B的money原创 2021-11-24 23:58:24 · 379 阅读 · 0 评论 -
SpringBoot整合Redis
如何创建SpringBoot项目应该就不用讲了吧。不熟悉的,建议自己搜索哦。提示一下,在IDEA中直接使用Spring Initializr 创建项目一下子就可以搞定了。这里不做过多介绍。整合Redis,第一步当然要导入他的依赖啦!<!--web场景--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte原创 2021-11-24 22:28:04 · 670 阅读 · 0 评论 -
Jedis操作Redis6
文章目录Jedis操作Redis61. IDEA连接远程的Redis2. 各种命令操作Jedis操作Redis61. IDEA连接远程的RedisJedis是一个java的模块,用来连接和操作我们的Redis数据库。类似于以前我们用我们的jdbc操作我们的mysql数据库。开始前,我们先要把redis的配置文件修改一下:把bind 127.0.0.1 去掉,并且把protected-mode改为no。然后我们还得关闭我们的防火墙:可以先通过以下命令查看防火墙的状态。systemctl s原创 2021-11-20 17:56:09 · 1346 阅读 · 0 评论 -
Redis6新数据类型
文章目录Redis6新数据类型BitmapsHyperLogLogGeospatialRedis6新数据类型Bitmaps鉴于合理地操作位能够有效地提高内存使用率和开发效率。Redis6 推出了 一种新的“数据类型”——Bitmaps。Bitmaps本身不是一个数据类型,实际上它就是字符串(key-value),只不过,他可以对字符串的位进行操作。我们可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,而对于数组的下标,我们将它称为偏移量。命令描述se原创 2021-11-20 00:02:28 · 622 阅读 · 0 评论 -
Redis的发布和订阅
Redis的发布和订阅Redis发布订阅(pub/ sub)是一种消息通信模式,发布者发布消息,订阅者接收消息。那么,这种发布订阅的通信模式是怎么工作的呢?其实很简单,发布者指定想要发布的频道,然后把消息发布到该频道上。订阅者通过订阅频道,可以即使地获得对应频道上的消息。Redis的客户端可以订阅任意数量的频道。举个例子:发布者往频道1、频道2、频道3分别发布消息one、two、three。此时订阅者订阅了频道1和频道2,那么订阅者就会接收到频道1和频道2上面的消息one跟two。需要注意的是,订阅原创 2021-11-19 21:18:52 · 932 阅读 · 0 评论 -
Redis配置文件最详细解析
文章目录Part1、Units 单位Part2、INCLUDES 包含Part3、MODULES 模型Part4、NETWORK 网络4.1 bind 和 protected-mode4.2 port4.3 tcp-backlog4.4 timeouttcp-keepalivedPart5、GENERAL 生成5.1 daemonize5.2 pidfile5.3 loglevel 和 logfile5.4 databasePart6、SECURITY 安全6.1 requirepassPart7、LIMI原创 2021-11-17 14:05:41 · 971 阅读 · 0 评论 -
Redis各数据类型的常用命令操作
文章目录一、Redis的key键操作二、常用数据类型——StringRedis是以键值对的方式存放数据的。一、Redis的key键操作以下命令中的key表示的是键的名字。命令描述keys *查看当前库所有的keyexists key判断某个key是否存在type key查看key的类型del key删除指定的key数据unlink key根据value选择非阻塞删除仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作中ex原创 2021-11-17 12:24:17 · 993 阅读 · 0 评论 -
Linux安装Redis
直接给官方的下载方式。(记得在想要放Redis的地方使用wget指令)如果make报错:struct redisServer’ has no member named ‘server_cpulist’很有可能是gcc版本的问题,这里我们下载一个高版本的gcc就可以解决问题了。#升级到 5.3及以上版本yum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-原创 2021-11-11 17:05:19 · 1062 阅读 · 0 评论