Redis
文章平均质量分 80
Yanní_G
这个作者很懒,什么都没留下…
展开
-
Redis缓存存在的三个问题及其解决方式
击穿为什么会有击穿Key的过期LRU、LFU导致Key已被移除如何解决分布式锁分布式锁的问题设置锁的Redis挂了:设置锁的过期时间没挂但是锁时间太短导致超时锁失效,后续线程新设置了一把锁进到数据库继续使用多线程:线程1去数据库取数据,线程2每隔一段时间如果更新锁过期时间但是这样就导致了客户端代码量增多所以我们自己实现分布式协调挺麻烦的。看后续有了ZooKeeper怎么帮我们解决这些分布式协调的问题的。穿透为什么会有穿透从业务接收的查询是你的系统根本不存原创 2021-07-01 23:02:52 · 175 阅读 · 1 评论 -
Redis Cluster
ClusterAKF图解X:全量镜像Y:业务功能Z:数据分片Redis:主从机上进行读写分离Kafka:读写全部在主机上进行,所有从机全部用作主机挂机时的高可用替换主机集群解决了单点故障,单机容量、单机访问量的问题,但是引入了新的问题数据一致性问题强一致性主节点写,阻塞,所有从节点全部写完才给用户返回,破坏了可用性,但是我们本来建立集群就是加强可用性的,这不是违背了自己的开始的逻辑了吗?容忍不一致所以我们要么容忍数据丢失一部分(主自己写成功,然后从节点异步同步)最终一原创 2021-07-01 22:53:35 · 184 阅读 · 0 评论 -
Redis数据库
数据库结构体typedef struct redisDb { // ... //数据库id,默认一共16个 int id; // 数据库键空间,保存着数据库中的所有键值对 dict *dict; // 保存键的过期时间 dict *expires; // ...} redisDb;存储对象用一个大字典。数据库dict和expires都是使用指针指向同一个对象,所以不存在数据冗余的情况,此处好画图而已。过期键删除策略定时删除:清内存,但是耗原创 2021-07-01 22:46:50 · 102 阅读 · 0 评论 -
Redis基础知识大全
1 SDSstruct sdshdr{ // 记录buf数组中已经使用的字节数量 // 等于SDS所保存的字符串的长度 int len; // 记录buf数组中未使用的字节数量 int free; // 字节数组,用于保存字符串 char buf[];}SDS为什么性能高常数复杂度获取字符串长度【O(1)】,C语言字符串需要遍历一次【O(N)】不用检查是否会溢出,SDS函数接口会帮我们检查是否会char数组溢出,如果溢出会申请一块新原创 2021-03-13 20:28:32 · 166 阅读 · 0 评论