Redis源码剖析之字典(dict)
Dict在redis中是最为核心的一个数据结构,因为它承载了redis里的所有数据,你可以简单粗暴的认为redis就是一个大的dict,里面存储的所有的key-value。redis中dict的本质其实就是一个hashtable,所以它也需要考虑所有hashtable所有的问题,如何组织K-V、如何处理hash冲突、扩容策略及扩容方式……。实际上Redis中hashtable的实现方式就是普通的....

Redis源码剖析系列博文开篇&大纲
今年我启动了好几个比较有挑战的个人项目,比如写一门编程语言、成为一名视频UP主、写科幻小说…… 这些项目目前进度都很堪忧,一方面这些项目挑战都比较大,另一方面业余时间还要忙着吃吃喝喝、追剧、刷综艺、睡懒觉…… 不过有个项目进度不至于那么不堪,那就是今天的猪脚——《Redis源码剖析》系列博文,今天也是这个系列博文的开篇。为此,我也在github上建立了中文注解版的Redis源码库,详见https....

Redis源码剖析之SDS(Simple Dynamic String)
SDS(simple dynamic string)是Redis提供的字符串的封装,在redis中也是存在最广泛的数据结构,它也是很多其他数据结构的基础,所以才选择先介绍SDS。 SDS也兼容部分C字符串API(strcmp,strlen),它如何兼容C字符串我觉得也是有个很sao的操作,等看完我这篇博客你就明白了。在开始正式内容前,我先抛几个问题(有些也是面试高频题),带着问题去学习也是一种非....

Redis源码剖析之快速列表(quicklist)
何为quicklist,上次说到ziplist每次变更的时间复杂度都非常高,因为必须要重新生成一个新的ziplist来作为更新后的list,如果一个list非常大且更新频繁,那就会给redis带来非常大的负担。如何既保留ziplist的空间高效性,又能不让其更新复杂度过高? redis的作者给出的答案就是quicklist。其实说白了就是把ziplist和普通的双向链表结合起来。每个双链表节点中....

Redis源码剖析之跳表(skiplist)
计算机领域有很多种数据结构,数据结构的存在要么是为了节省时间、要么是为了节省空间,或者二者兼具,所以就有部分数据结构有时间换空间,空间换时间之说。其实还有某些以牺牲准确性来达到节省时间空间的数据结构,像我之间讲过的bloomfilter就是其中的典型。而今天要讲的skiplist也是一种概率性数据结构,它以一种随机概率降数据组织成多级结构,方便快速查找。跳表究竟何为跳表?我们先来考虑下这个场景,....

Redis源码剖析之robj(redisObject)
我们在之前的文章中已经了解过一部分Redis的数据结构了,尤其是dict 中讲到,可以把redis看做一个hashtable,存储了一堆的key-value,今天就来看下key-value中value的主要存储结构redisObject(后文统称robj)。robj的详细代码见object.c字段详解相对与其他几个数据结构,robj相对简单,因为只包含了几个字段,含义都很明确。复制typedef....
Redis源码剖析之数据过期(expire)
我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求访问最新1小时的数据,只有不到千分之一的请求会访问超过1天的数据。我们之前这份数据存了两天(近500g内存数据),如果算上主备的话用掉了120多个Redis实例(一个实例8g内存),光把过期时间从2天改成1天就能省下60多个redis实例,而且对原业务也没有啥太大影响。当然Redis已经....
Redis源码剖析之内存淘汰策略(Evict)
Redis作为一个成熟的数据存储中间件,它提供了完善的数据管理功能,比如之前我们提到过的数据过期和今天我们要讲的数据淘汰(evict)策略。在开始介绍Redis数据淘汰策略前,我先抛出几个问题,帮助大家更深刻理解Redis的数据淘汰策略。何为数据淘汰,Redis有了数据过期策略为什么还要有数据淘汰策略?淘汰哪些数据,有什么样的数据选取标准?Redis的数据淘汰策略是如何实现的?何为Evict我先....

Redis源码剖析之RDB
我们小学三年级的时候就知道,redis是一个纯内存存储的中间件,那它宕机会怎么样?数据会丢失吗?答案是可以不丢。 事实上redis为了保证宕机时数据不丢失,提供了两种数据持久化的机制——rdb和aof。rdb就定期将内存里的数据全量dump到磁盘里,下次启动时就可以直接加载之前的数据了,rdb的问题是它只能提供某个时刻的数据快照,无法保证建立快照后的数据不丢,所以redis还提供了aof。aof....
Redis源码剖析之AOF
书接上回,上回我们详细讲解了Redis的RDB机制,RDB解决了redis数据持久化一部分的问题,为什么说一部分?因为rdb是redis中某一时刻的快照,那么在这次快照后如果数据有新的变更,它是不会被持久化下来的,必须得等到下次rdb备份。然而,生成rdb是和消耗性能的,所以它就不适合很频繁生成。Redis为了弥补这一不足提供了AOF。AOF的全称是AppendOnlyFile,源码在aof.c....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
云数据库 Tair(兼容 Redis)您可能感兴趣
- 云数据库 Tair(兼容 Redis)自动清理
- 云数据库 Tair(兼容 Redis)键值对
- 云数据库 Tair(兼容 Redis)医院
- 云数据库 Tair(兼容 Redis)互联网
- 云数据库 Tair(兼容 Redis)源码
- 云数据库 Tair(兼容 Redis)系统
- 云数据库 Tair(兼容 Redis)批量删除
- 云数据库 Tair(兼容 Redis)Key
- 云数据库 Tair(兼容 Redis)20w
- 云数据库 Tair(兼容 Redis)缓存
- 云数据库 Tair(兼容 Redis)集群
- 云数据库 Tair(兼容 Redis)安装
- 云数据库 Tair(兼容 Redis)分布式
- 云数据库 Tair(兼容 Redis)命令
- 云数据库 Tair(兼容 Redis)实现
- 云数据库 Tair(兼容 Redis)配置
- 云数据库 Tair(兼容 Redis)持久化
- 云数据库 Tair(兼容 Redis)分布式锁
- 云数据库 Tair(兼容 Redis)数据类型
- 云数据库 Tair(兼容 Redis)Springboot
- 云数据库 Tair(兼容 Redis)数据结构
- 云数据库 Tair(兼容 Redis)原理
- 云数据库 Tair(兼容 Redis)操作
- 云数据库 Tair(兼容 Redis)java
- 云数据库 Tair(兼容 Redis)连接
- 云数据库 Tair(兼容 Redis)实战
- 云数据库 Tair(兼容 Redis)MySQL
- 云数据库 Tair(兼容 Redis)spring
- 云数据库 Tair(兼容 Redis)报错
- 云数据库 Tair(兼容 Redis)应用
云原生多模数据库Lindorm
Lindorm是适用于任何规模、多种类型的云原生数据库服务,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase、Solr、SQL、OpenTSDB等多种开源标准接口,是互联网、IoT、车联网、广告、社交、监控、游戏、风控等场景首选数据库,也是为阿里巴巴核心业务提供支撑的数据库之一。
+关注