Redis中的Reactor模型
Reactor模型 Reactor模型是网络服务器端用来处理高并发网络 IO 请求的一种编程模型。 处理三类事件 连接事件:客户端→服务器的连接请求,对应服务端的连接事件 写事件:客户端→服务器的读请求,服务端处理后要写回客户端,对应服务端的写事件 读事件:服务端要从客户端读取请求内容,对应服务端的…
Redis集群之cluster
分片集群的由来 Redis从单个节点的架构方式演变到主从模式,提高了数据的可靠性以及相对较弱的高可用性;从主从模式到哨兵模式将高可用性提升到了一个新的高地。但是无论是主从还是哨兵模式下的集群,其实都是单个节点在处理客户端的命令,也即是说主节点拥有着所有的数据。那么如果数据量太大就必然会导致内存的暴增…
Redis集群之哨兵
上一章我们讲如果Master宕机会导致部分数据未同步还会丧失写的功能。如何避免这种情况呢?哨兵登场了。 什么是哨兵 Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是Redis高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所…
Redis集群之主从
Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是「读写分离」的方式。 读操作:主库、从库都可以接收; 写操作:首先到主库执行,然后,主库将写操作同步给从库。 实操 我们先启动三个redis容器 docker run -d -p 5670:6379 --name redis-ma…
Redis数据过期和淘汰策略
Redis过期相关命令 Redis提供了四种命令来设置key的过期时间: EXPIRE key seconds // 设置多少秒后过期 EXPIREAT key timestamp 设置 key 过期时间的时间戳(unix timestamp) 以秒计 PEXPIRE key millisecond…
Redis内存统计
Redis提供内存统计命令,在客户端通过 redis-cli 连接服务器后,通过 info 命令可以查看内存使用情况:info memory。 127.0.0.1:6379> info memory # Memory used_memory:3223164040 #Redis分配的内存总量,即…
Redis为啥这么快
Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Red…
cherry-pick 遴选
什么是遴选 使用遴选(cherry-pick)命令,Git 可以让你将任何分支中的个别提交合并到你当前的 Git HEAD 分支中。 当执行 git merge 或者 git rebase 时,一个分支的所有提交都会被合并。cherry-pick 命令允许你选择单个提交进行整合。 使用 cherry…
数组指针遍历
一维数组 #include <stdio.h> int main(){ int arr[] = {3,1,2,3,4,5,6,7,8,9,10}; int *pa = (int *) arr; for (int i = 0; i < 10; ++i) { printf("…
MySQL取差集
相当于A的独有+B的独有 select * from a full outer join b on a.key = b.key where a.key is null or b.key is null 此写法只在oracle中适用,在mysql中得用union select * from a lef…