redis
yanph123
作者不懒,留下了简介
展开
-
Redis 性能优化
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文将通过一些优化手段,让 Redis 更加高效的运行本文将使用以下手段,来提升 Redis 的运行速度:缩短键值对的存储长度; 设置键值的过期时间; 禁用长耗时的查询命令; 使用 slowlog 优化耗时命令; 使用.原创 2020-06-22 15:40:12 · 964 阅读 · 0 评论 -
Redis 数据结构之【快速列表】
含义:Redis 早期版本存储 list 列表数据结构使用的是压缩列表 ziplist 和普通的双向链表linkedlist,也就是元素少时用 ziplist,元素多时用 linkedlist。// 链表的节点struct listNode<T> {listNode* prev; listNode* next;T value;}// 链表struct list {listNode *head;listNode...原创 2020-09-07 13:50:30 · 204 阅读 · 0 评论 -
Redis 数据结构之【压缩列表】
含义:压缩列表是一块连续的内存空间,元素之间紧挨着存储,没有任何冗余空隙。内部结构: struct ziplist<T> { int32 zlbytes; // 整个压缩列表占用字节数 int32 zltail_offset; // 最后一个元素距离压缩列表起始位置的偏移量,用于快速定位到最后一个节点 int16 zllength; // 元素个数 T[] entries; // 元素内容列表,挨个挨个紧凑存储 int8 ...原创 2020-07-16 14:33:09 · 203 阅读 · 0 评论 -
Redis 数据结构之【字典】
含义: dict 是 Redis 服务器中出现最为频繁的复合型数据结构,除了 hash 结构的数据会用到字典外,整个 Redis 数据库的所有 key 和 value 也组成了一个全局字典,还有带过期时间的 key 集合也是一个字典。zset 集合中存储 value 和 score 值的映射关系也是通过 dict 结构实现的。struct RedisDb { dict* dict; // all keys key=>value dict* expires...原创 2020-07-16 10:55:03 · 213 阅读 · 0 评论 -
Redis 数据结构之【SDS】
含义: Redis 中的字符串是可以修改的字符串,在内存中它是以字节数组的形式存在的。我们知道 C 语言里面的字符串标准形式是以 NULL 作为结束符,但是在 Redis 里面字符串不是这么表示的。因为要获取 NULL 结尾的字符串的长度使用的是 strlen 标准库函数,这个函数的算法复杂度是 O(n),它需要对字节数组进行遍历扫描,作为单线程的 Redis 表示承受不起。Redis 的字符串叫着「SDS」,也就是 Simple Dynamic String。它的结构是一个带长度信息...原创 2020-07-15 14:37:29 · 274 阅读 · 0 评论 -
Redis 淘汰算法
当 Redis 内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换 (swap)。交换会让 Redis 的性能急剧下降,对于访问量比较频繁的 Redis 来说,这样龟速的存取效率基本上等于不可用。 在生产环境中我们是不允许 Redis 出现交换行为的,为了限制最大使用内存,Redis 提供了配置参数 maxmemory 来限制内存超出期望大小。 当实际内存超出 maxmemory 时,Redis 提供了几种可选策略 (maxmemory-policy)...原创 2020-07-14 13:43:21 · 726 阅读 · 0 评论 -
Redis Info 指令
在使用 Redis 时,时常会遇到很多问题需要诊断,在诊断之前需要了解 Redis 的运行状态,通过强大的 Info 指令,你可以清晰地知道 Redis 内部一系列运行参数。 Info 指令显示的信息非常繁多,分为 9 大块,每个块都有非常多的参数,这 9 个块分别是: 1、Server 服务器运行的环境参数 2、Clients 客户端相关信息 3、Memory 服务器运行内存统计数据 4、P...原创 2020-07-14 11:35:06 · 116 阅读 · 0 评论