redis
詹姆斯gosling
高级Java
展开
-
redis分布式锁的底层原理
当有多个客户端请求过来的时候,redis分布式会判断这个key是否被锁住,如果没有锁住的话,redis会通过hash算法计指定到某一个机器上执行lua脚本进行保存key。通过看门狗watch dog一个后台启动的监控线程去判断任务有没有执行完,如果任务没有执行完,到了超时时间,会通过延时的方式延长生存时间。当另一客户端请求过来以后,发现key已经被锁住,会一直循环等待直到另一个客户端线程占有key的锁被释放。具体流程如下如:...原创 2022-03-15 09:57:01 · 1290 阅读 · 0 评论 -
redis如何保证与数据库的数据一致性
在实际操作redis的过程中,我们时常会遇到数据不一致的问题,下面我列举几个场景:1、比如在删除操作的时候,先删除缓存,再删除数据库数据。但是删除数据库的操作还没有执行成功,这时如果存在并发的问题,当另一个线程读取该数据,发现缓存不存在,去数据库查询,查询后将结果缓存到redis中。这时另一个线程的删除数据库的操作执行完成,这是就存在数据库没有数据,缓存还保留着原有旧数据的不一致性问题。2,还有在执行更新商品库存的操作的时候,商品库存现在是100,更新数据库为99,再更新缓存,但是这是数据库更新成功之后原创 2020-10-23 21:49:25 · 1309 阅读 · 1 评论 -
redis持久化的两种方式rdb和aof
对于我们经常使用的redis技术,有时我们需要将他持久化到磁盘进行保存。这是我们常用的两种技术就是rdb和aof。首先我们来介绍一下redis持久化的一个流程什么样的?1,首先客户端发送写数据命令2,服务端接收到写命令,将数据放到内存缓冲区。3,服务端会fork一个进程调用写操作,将内存缓冲区的数据写入磁盘4,操作系统将缓冲区中的数据转移到磁盘控制器上。5,磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。然后再来介绍rdb持久化的方式:RDB其实就是把数据以快照的形式保存在磁盘上转载 2020-10-18 11:15:32 · 147 阅读 · 0 评论