redis
文章平均质量分 92
Tang World
璀璨光辉,耀耀生辉
展开
-
Redis主从同步方面的坑
三大坑主从数据不一致主从数据不一致,就是指客户端从从库中读取到的值和主库中的最新值并不一致。举个例子,假设主从库之前保存的用户年龄值是19,但是主库接收到了修改命令,已经把这个数据更新为20了,但是,从库中的值仍然是19。那么,如果客户端从从库中读取用户年龄值,就会读到旧值。那为啥会出现这个坑呢?其实这是因为主从库间的命令复制是异步进行的。具体来说,在主从库命令传播阶段,主库收到新的写命令后,会发送给从库。但是,主库并不会等到从库实际执行完命令后,再把结果返回给客户端,而是主库自己在本地执行完命令原创 2022-05-16 16:21:30 · 832 阅读 · 0 评论 -
Redis缓存穿透,穿透击穿,缓存雪崩
缓存穿透,穿透击穿,缓存雪崩:缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。 缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失原创 2021-01-19 19:53:52 · 106 阅读 · 0 评论 -
Redis分布式锁
在多线程并发的情况下,我们可以使用锁来保证一个代码块在同一时间内只能由一个线程访问。比如Java的synchronized关键字和Reentrantlock类等等。这样子可以保证在同一个JVM进程内的多个线程同步执行。如果在分布式的集群环境中,如何保证不同节点的线程同步执行呢?怎么才能在分布式系统中,实现不同线程对代码和资源的同步访问?对于单进程的并发场景,我们可以使用语言和类库提供的锁。对于分布式场景,我们可以使用分布式锁。那么怎么才能实现分布式系统中的锁呢?分布式锁有许多原创 2021-01-19 16:32:11 · 447 阅读 · 0 评论 -
Redis内存模型以及数据结构编码
关于Redis数据存储的细节,涉及到内存分配器(如jemalloc)、简单动态字符串(SDS)、5种对象类型及内部编码、redisObject。在讲述具体内容之前,先说明一下这几个概念之间的关系。下图是执行set hello world时,所涉及到的数据模型。图片来源:https://searchdatabase.techtarget.com.cn/7-20218/原创 2021-01-19 15:04:49 · 56 阅读 · 0 评论 -
Redis哨兵模式
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。Redis哨兵这里的哨兵有两个作用通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。原创 2021-01-19 10:49:42 · 5339 阅读 · 0 评论