![](https://img-blog.csdnimg.cn/cdd907f903004e2eaeed556383983f80.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 86
redis基础重点与高级部分内容
龙崎流河
沉淀
展开
-
跳表的实现代码
【代码】跳表的实现代码。原创 2023-07-24 19:10:59 · 264 阅读 · 0 评论 -
redis分布式锁
redis 触发故障转移,其中一个 slave 升级为新的 master,此时新上位的master并不包含线程1写入的键值对,因此线程 2 尝试获取锁也可以成功拿到锁,此时相当于有两个线程获取到了锁,可能会导致各种预期之外的情况发生,例如最常见的脏数据。可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象),不会因为之前已经获取过还没释放而阻塞。锁变量由多个实例维护,即使有实例发生了故障,锁变量仍然是存在的,客户端还是可以完成锁操作。原创 2023-05-04 17:54:13 · 785 阅读 · 2 评论 -
Redis的哈希表是如何扩容的?
当元素数量比较少的时候就需要缩容以节约不必要的内存。为ht[1]分配空间,ht[0].used当前值为4,8恰好是第一个大于等于4的2的N次幂,那么当前就会将ht[1]哈希表大小设置为8。ht[2]:两个哈希表,字典使用的哈希表是ht[0],ht[1]则是当对ht[0]哈希表进行rehash时使用。迁移过程中,新增的数据只会存在ht[1]中,而不会存放到ht[0],ht[0]只会减少不会新增。不会,因为在迁移时,首先会从ht[0]读取数据,如果ht[0]读不到,则会去ht[1]读。原创 2023-04-14 13:32:49 · 2026 阅读 · 1 评论 -
关于Redis的BigKey
这个指令没有offset,limit参数,是要一次性吐出所有满足条件的key,由于redis是单线程的,其所有操作都是原子性的,而keys算法是遍历算法,时间复杂度是n,如果哦实例中有千万级别以上的key,这个指令就会导致redis服务卡顿,所有读写Redis的指令就会被延后甚至超时,可能引起缓存雪崩甚至数据库宕机。给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小,但是想查询大于10kb的所有key,–bigkeys参数就无能为力了。拒绝BigKey防止网卡流量,慢查询。原创 2023-04-13 22:53:40 · 856 阅读 · 0 评论 -
Redis经典五大类型源码以及底层实现
只有整数才会使用 int,如果是浮点数, Redis 内部其实先将浮点数转化为字符串值,然后再保存。embstr 与 raw 类型底层的数据结构其实都是 SDS (简单动态字符串,Redis 内部定义 sdshdr 一种结构)。Redis内部会根据用户给的不同键值而使用不同的编码格式自适应地选择较优化的内部编码格式,这一切对用户都是透明的。字符串int:8个字节的长整型。embstr:小于等于44个字节的字符串。raw:大于44个字节的字符串。原创 2023-04-02 21:48:36 · 617 阅读 · 0 评论 -
Redis为什么快?epoll和IO多路复用
IO:网络io多路:多个客户端连接,指的是多条TCP连接复用:用一个进程来处理多条的连接,使用单进程就能够实现同时处理多个客户端的连接实现了用一个进程来处理大量的用户连接,IO多路复用类似一个规范和接口,可以分select->poll->epoll三个阶段来描述。break;} }break;} }/**System . out . println("-----111 等待连接");原创 2023-03-31 14:20:13 · 421 阅读 · 0 评论 -
Redis集群
Redis集群是一个提供在多个Redis节点间共享数据的程序集,可以支持多个Master。原创 2023-03-30 21:50:14 · 156 阅读 · 0 评论 -
Redis哨兵
吹哨人巡查监控后台master主机是否故障,如果故障自动根据投票数自动将某一个从库转成成新主库,继续对外服务。原创 2023-03-30 14:38:39 · 152 阅读 · 0 评论 -
Redis主从复制
主从复制,master以写为主,slave以读为主,当master数据变化的时候,自动将新的数据异步同步到其它的slave数据库。原创 2023-03-30 13:05:15 · 841 阅读 · 0 评论