redis
allenxguo
C++
展开
-
Redis数据结构原理解析:字符串篇
Redis对象通用对象由于所有的redis对象都包含此结构以便redis管理对象的内存、创建、销毁等等,所以这里需要先介绍此对象结构。// 所有redis结构都有这个头:server.h#define LRU_BITS 24typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; /* LRU time (relative to global lru_cl原创 2020-06-27 21:00:30 · 509 阅读 · 0 评论 -
Redis原理扫盲(长篇)
文章目录简介数据结构Redis对象通用对象字符串string常用操作数据结构存储方式为什么是44字节扩容列表list常用操作快速列表quicklist数据结构存储方式特点整数集合intset字典常用操作使用场景数据结构扩容关于扩容的问题高位进位法扩容字典遍历hash攻击集合set常用操作跳表skiplist常用操作使用场景数据结构跳表的构建特点压缩列表ziplist数据结构级联更新问题紧凑列表listpack数据结构解决级联更新问题为什么listpack比ziplist更好取代ziplist基数树压缩存储应原创 2020-06-21 18:44:20 · 754 阅读 · 0 评论 -
【RPC-Python】Redis 协议的缺陷
连接重连RPC 是建立在 TCP 协议基础上进行消息传递,而 TCP 连接并不总是稳定的,它会受到网络波动的影响而导致连接断开。同时大部分服务器也会限制空闲连接的生存期,如果一个 TCP 连接闲置过久,也会被服务器主动关闭。如果这个 RPC 是以手机作为客户端发起的请求,那么这种连接断开的情况就更为频繁,用户的网络切换行为随时都会引发连接断开。当 RPC 连接断开时,客户端一般都需要实现连...原创 2018-08-12 15:52:42 · 1071 阅读 · 0 评论 -
【RPC-Python】深入 RPC 客户端设计
RPC 客户端实现起来要比服务器简单,所以我们先讲客户端的实现原理和方法。当然,实现 RPC 客户端也具有一定的挑战性,其核心难点在于客户端往往并不是单线程的,我们需要考虑多线程下如何流畅使用客户端而不出现并发问题。我们将根据下图所示的模型图逐步讲解: 在多线程客户端中,客户端和数据库之间会维护一个连接池。当线程中的代码需要访问数据库时,先从连接池中获取一个连接,与数据库交互完成后再将这...原创 2018-08-12 16:51:03 · 2184 阅读 · 0 评论 -
【深入理解RPC】基于Python自建分布式高并发RPC服务
系列索引:原创 2018-08-01 22:03:32 · 4379 阅读 · 0 评论