随笔分类 - redis
1
摘要:一、前言 分布式锁相信大家一定不会陌生, 想要用好或者自己写一个却没那么简单 想要达到上述的条件, 一定要 掌握分布式锁的应用场景, 以及分布式锁的不同实现, 不同实现之间有什么区别 二、分布式锁场景 如果想真正了解分布式锁, 需要结合一定场景; 举个例子, 某夕夕上抢购 AirPods Pro 的
阅读全文
摘要:一、过期设置 1.1 过期设置的指令 Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间 expire可以设置过期时间 1 SET key value // 存入键值对 2 3 EXPIRE key 5 // 设置过期时间(秒) 4 PEXPIRE key 5000
阅读全文
摘要:今天我们来了解一下 Redis 命令执行的过程。在之前的文章中《当 Redis 发生高延迟时,到底发生了什么》我们曾简单的描述了一条命令的执行过程,本篇文章展示深入说明一下,加深读者对 Redis 的了解。 上篇 如下图所示,一条命令执行完成并且返回数据一共涉及三部分,第一步是建立连接阶段,响应了s
阅读全文
摘要:Murmurhash: 是一种非加密型哈希函数,适用于一般的哈希检索操作。高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc++、nginx、libmemcached等开源系统。2011年Appleby被Google雇佣,随后Google推出
阅读全文
摘要:一、引言 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。 为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。RDB的介绍在这篇文章
阅读全文
摘要:一、引言 1.1 持久化简介 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。 为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。
阅读全文
摘要:一、简介 Redis是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象的对象系统。今天我们就通过12张图来全面了解一下它的数据结构和对象系统的实现原理。 本文的内容如下: 首先介绍六种基础数据结构:动态字符串,链表,字典
阅读全文
摘要:一、建立主从关系 在配置文件中加入slaveof {masterHost} {masterPort}启动生效 在redis_server启动命令后加入--slaveof {masterHost} {masterPort}生效 直接使用命令:slaveof {masterHost} {masterPo
阅读全文
摘要:Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redi
阅读全文
摘要:整个分析的代码多数都在ae.c、ae.h、ae_epoll.c、ae_evport.c、ae_kqueue.c、ae_select.c,某些不在这些文件的函数会特别指出位置 一、Redis的事件模型库 Redis服务器是一个事件驱动程序。下面先来简单介绍什么是事件驱动。 所谓事件驱动,就是当你输入一
阅读全文
摘要:一、线程模型(网络连接库的整体实现框架) 1.1 文件事件处理器 Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型
阅读全文
摘要:一、quicklist简介 为什么说quicklist是“二合一”呢?如果你看过STL中的deque的实现,就会知道deque是由一个map中控器和一个数组组成的数据结构,它既具有链表头尾插入便捷的优点,又有数组连续内存存储,支持下标访问的优点。Redis中是采用sdlist和ziplist来实现q
阅读全文
摘要:在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接。于是查询了一些资料,最后找到了hiredis。然而直接用它的话,难免有点不方便。于是,对其进行封装。 hiredis直接去git上克隆,地址:https://github.com/redis/hiredis。 下载好之后,由
阅读全文
摘要:redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c 压缩列表是redis专门开发出来为了节约内存的内存编码数据结构。源码中关于压缩列表介绍的注释也写得比较详细。 一、数据结构 压缩列表的整体结构如下 1 /* 2 <zlbytes> <zltail> <zllen
阅读全文
摘要:redis中整数集合intset相关的文件为:intset.h与intset.c intset的所有操作与操作一个排序整形数组 int a[N]类似,只是根据类型做了内存上的优化。 一、数据结构 1 /** 2 * 整型有序集合intset 3 */ 4 typedef struct intset
阅读全文
摘要:redis中并没有专门给跳跃表两个文件。在5.0.2的版本中,结构体的声明与定义、接口的声明在server.h中,接口的定义在t_zset.c中,所有开头为zsl的函数。 一、数据结构 单个节点: 1 /** 2 * ZSETs use a specialized version of Skipli
阅读全文
摘要:redis中字典相关的文件为:dict.h与dict.c 与其说是一个字典,道不如说是一个哈希表。 一、数据结构 1.1 dictEntry结构体 1 /** 2 * dictEntry是一个kv对的单向链表,其中v是一个联合体,支持数字,或者是指向一块内存的指针。 3 */ 4 typedef s
阅读全文
摘要:redis中双向链表相关的文件为:adlist.h与adlist.c 一、数据结构 redis里定义的双向链表,与普通双向链表大致相同 1.1 单个节点结构 1 /* Node, List, and Iterator are the only data structures used current
阅读全文
摘要:redis中动态字符串sds相关的文件为:sds.h与sds.c 一、数据结构 redis中定义了自己的数据类型"sds",用于描述 char*,与一些数据结构 1 typedef char *sds; 2 3 /* Note: sdshdr5 is never used, we just acce
阅读全文
摘要:1、Redis简介: Redis是一种数据库。能够存储数据、管理数据的一种软件。 2、数据库应用的发展历程: 单机数据库时代:一个应用,一个数据库实例 缓存(Memcached,存放少量的经常使用的数据)、水平切分时代(把一个表或多个较大的表存放在一个单独的数据库中) 读写分离时代(需要同步机制,类
阅读全文
1
浙公网安备 33010602011771号