Redis
文章平均质量分 97
有盐先生
唯有执着,方得始终!努力做一个有思考的程序员。
展开
-
Redis之dict数据结构的渐进式rehash原理
前面讲到了Redis底层数据结构dict(字典)的结构设计,本篇文章继续深入了解dict(字典)数据结构的扩容过程(即rehash过程);如果不了解dict(字典)的数据结构,可以先看看这篇文章:图解Redis底层数据结构实现原理。这里就直接上图了,dict(字典)数据结构如下图:扩展或收缩哈希表需要将 ht[0]里面的所有键值对 rehash 到 ht[1]里面, 但是, 这个 rehash 动作并不是一次性、集中式地完成的, 而是分多次、渐进式地完成的。...原创 2020-09-02 23:55:20 · 1262 阅读 · 2 评论 -
Redis Cluster数据分片实现原理、及请求路由实现
Redis在3.0上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,也就是说每台 Redis 节点上存储不同的数据。但redis cluster发布得比较晚(2015年才发布),在这期间各个大厂在redis主从模式上开发了自己的集群,想进一步详细了请参考:聊聊Redis的各种集群方案、及优缺点对比。Redis Cluster模式为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器,内存/QPS不受限于单机,可受益于分布式集群高扩展性。Redis Cluster是一种原创 2020-07-27 15:44:57 · 6565 阅读 · 1 评论 -
Redis和Memcache的主要区别
提到分布式缓存就不得不提及到Redis和Memcache的区别,刚到途家工作的时候,一些老项目基本上用的全是Memcache做缓存,后面也不断迁移成Redis,原因就是Memcache没人维护了,都搞Redis去了!目前业界的主流也是使用Redis,相对于Memcache来说,Redis的主要优点有一下几个: 1.存储方式 Memcache把数据全部存在内存之中,断电后会挂掉,无法做到数据的持久化,且数据不能超过内存大小。 redis支持数据的持久化,RDB和AOF持久化原创 2020-07-09 22:59:33 · 271 阅读 · 0 评论 -
聊聊Redis的各种集群方案、及优缺点对比
由于最近在忙找工作的事,先把大纲列出来,后续进行详细的再补充。望见谅......1.主从模式2.哨兵模式3.各大厂的Redis集群方案(1)客户端分片(2)代理分片(3)Codis4.Redis Cluster...原创 2020-07-09 22:58:12 · 12412 阅读 · 4 评论 -
图解Redis底层数据结构实现原理
待更新中原创 2020-06-26 11:58:38 · 8529 阅读 · 3 评论 -
Redis对外暴露的数据类型总结
Redis底层数据结构的实现包含:dict(字典)、sds(简单动态字符串)、intset(整数集合) 、ziplist(压缩列表)、quicklist(快速列表)、skiplist(跳跃表),但并没有直接对外暴露使用,而是基于这些底层的数据结构,redis使用API对外只暴露了五种使用的数据类型。各种数据类型大致应用场景和底层实现的数据结构如下: 1、String:最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。常用命令get、set、自增in.原创 2020-06-26 11:56:50 · 619 阅读 · 0 评论 -
Redis事务、及事务操作案例
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失,并且请求量增大时,读写不分离遇到瓶颈。为了避免单点故障 和 读写不分离,使用redis的主从模式(一主一从或多从)既能实现即使有一台服务器出现故障,其他服务器依然可以继续提供服务,又能实现读写分离。Redis 提供了复制(replication)功能,可以实现master数原创 2020-06-23 19:55:15 · 322 阅读 · 0 评论 -
Redis主从同步原理、及SYNC和PSYNC同步区别
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。请求量增大时,读写不分离遇到瓶颈。为了避免单点故障 和 读写不分离,使用redis的主从模式(一主一从或多从)既能实现即使有一台服务器出现故障,其他服务器依然可以继续提供服务,又能实现读写分离。Redis 提供了复制(replication)功能,可以实现master数据库原创 2020-06-20 21:18:21 · 6672 阅读 · 0 评论 -
Redis之VM机制
Redis的VM(虚拟内存)机制就是暂时把不经常访问的数据(冷数据)从内存交换到磁盘中,从而腾出宝贵的内存空间用于其它需要访问的数据(热数据)。通过VM功能可以实现冷热数据分离,使热数据仍在内存中、冷数据保存到磁盘。这样就可以避免因为内存不足而造成访问速度下降的问题。Redis提高数据库容量的办法有两种:一种是可以将数据分割到多个Redis Server上;另一种是使用虚拟内存把那些不经常访问的数据交换到磁盘上。需要特别注意的是Redis并没有使用OS提供的Swap,而是自己实现。Redis为了保证查找原创 2020-06-18 21:54:43 · 2191 阅读 · 1 评论 -
Redis之I/O多路复用模型实现原理
在I/O多路复用之前我们先来看看Redis是怎么和客服端建立连接的、单线程的socket服务端为什么I/O会阻塞。(1)Redis客户端连接Redis通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自client端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nag原创 2020-06-14 19:29:42 · 8161 阅读 · 11 评论 -
Redis之持久化机制和实现原理
1.Redis 持久化的意义redis的数据全部在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证redis的数据在发生突发状况时不会丢失、或者只丢失少量,于是必须根据一些策略来把redis内存中的数据写到磁盘中,这样当redis服务重启时,就会将硬盘中的数据恢复到内存中。Redis持久化的意义就是为了保证突然宕机,内存数据不会全部丢失。2.Redis 持久化机制redis有两种持久化机制:RDB和AOF。每种持久化机制各有优缺点,了解每种持久化机制的原理对我们使用Redis原创 2020-06-06 21:43:24 · 6629 阅读 · 0 评论 -
详解布隆过滤器原理、及分布式运用
1.什么是布隆过滤器布隆过滤器是一个叫“布隆”的人提出的,本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure)。它本身是一个很长的二进制向量,特点是高效地插入和查询,可以用来确定 “某一条数据一定不存在或者可能存在一个集合中”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少(因为是个二进制的向量),但是缺点是其返回的结果是概率性的,而不是确切的。2.布隆过滤器数据结构布隆过滤器是一个 bit 向量或者原创 2020-06-04 23:42:45 · 1806 阅读 · 4 评论