引言 redis中的字典应该是我们最为熟悉的一个结构,因为redis就可以看做是一个大的内存字典。在很多变成语言中都有字典的实现,如java中的HashMap,但是redis是使用c语言实现的,c语言中没有提供字典的实现,因此redis编写了自己的字典实现。哈希表 Redis 字典所使用的哈希表由 dict.h/dictht 结构定义:typedef struct dictht { //
demo#include <stdio.h>#include <stdlib.h>typedef struct dictEntry { void *key; /** key */ void *val; struct dictEntry *next;} dictEntry;typc
原创 2022-02-18 17:36:14
56阅读
一、字典介绍字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map), 是一种用于保存键值对(key-value pair)的抽象数据
一、字典介绍字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构 在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值), 这些关联的键和值就称为键值对 字典中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来...
redis的定义 在介绍redis之前,我们要介绍一些定义:1. NoSql:它泛指非关系型的数据库。2. 关系型数据库:就是以关系模型来建模的数据库管理系统,关系模型就是以行和列组成二维表。redis是NoSql数据库中使用较为广泛的非关系型内存数据库,它基于c语言开发。以key-value类型存储。他是单线程,memcache是多线程。redis默认一共有16个库,编号分别为0-15
转载 2023-06-30 13:07:22
40阅读
1.Redis 基础数据结构 Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。1.1 string (字符串)字符串 string 是 Redis 最简单的数据结构Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不
如果你使用过 redis,一定对它的内部实现感到好奇。本系列文章着重讲解 redis 在内存中的数据结构的实现。redis 本质上是一个数据结构服务器(data structures server),以高效的方式实现了多种数据结构,研究它的的数据结构和算法,对于提升我们算法的编程水平有很重要的参考意义。redis 的数据结构分2个不同的层面来讨论。第一个层面,是从使用者的角度,redis 对外暴露
转载 2023-07-06 19:57:24
33阅读
一,redis数据结构  1,redis五大对象    redis提供给用户直接访问的对象有五个:字符串对象,列表对象,哈希对象,集合对象,有序集合对象。  2,redis有较高性能的原因     除了直接使用内存的原因以外,基本对象使用多种底层数据结构,且灵活变化是redis高性能的另一个原因  3,底层数据结构    整数值,embstr编码的SDS(简单动态字符串对象),row编码的SDS,
转载 2024-06-27 12:51:19
11阅读
Redis底层数据结构数据结构大致来说是这么实现的,由几种基本类型的,组成redis对应的各种数据结构。所以下面我们先来了解一下这几种基本的数据结构。动态字符串SDS:SDS是redis里面定义的一种存储字符串的数据结构。传统的c语言字符串,获取字符串长度需要运算;字符串数组通常有结束标识,非二进制安全的;字符串一旦创建,就不能修改了(底层是char数组,当然不能修改了)。基于以上问题,redis
转载 2023-08-28 20:04:09
57阅读
存储结构首先Redis使用的是键值对的方式进行存储的,键使用的是字符串对象,值使用的是对象存储SDSRedis在存储字符串的使用不是使用的C语言字符串形式(字符串数组)进行存储,而是在内部是实现了自己的结构体SDSSDS由三部分组成,一个是整型len记录了buf数组中已经使用的字节的数量,一个是整型free记录了数组中还有多少是未使用的字节数量。最后一个就是一个字符串数组char buf[] 记录
转载 2023-08-30 08:42:16
102阅读
Redis原理篇—数据结构底层数据结构动态字符串SDS我们都知道 Redis 中保存的 Key 是字符串,value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常用的一种数据结构。不过 Redis 没有直接使用C语言中的字符串,因为C语言字符串存在很多问题:获取字符串长度的需要通过运算非二进制安全不可修改Redis 构建了一种新的字符串结构,称为简单动态字符串(Simple Dy
本文主要介绍 Redis 基础,包括什么是 RedisRedis 数据结构有那些 以及 各种Redis 数据结构的常用操作命令1. 初始 Redis1.1 NoSQL 数据库 —— 非关系型数据库SQL 1) 结构化 -—— 例如 MySQL 中的表结构 (不建议修改,初始时就要设计好) 2) 关联的 —— MySQL 中的外键 3) SQL 查询 —— 查询语法是固定的 4)具有事务需求
转载 2023-08-04 14:23:36
328阅读
前言Redis的 List 数据类型,作为一种数据类型,它的底层实现是链表,由于 Redis 使用的C语言没有内置这种数据结构,所以 Redis构建了自己的链表实现。List类型的结构就是链表,链表中的每个节点都保存了一个值。除了链表键之外,发布与订阅、慢查询、监视器等功能也用到了链表,Redis服务器本身还使用链表来保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区( output b
转载 2023-08-11 17:29:34
118阅读
Redis 字典结构 文章目录Redis 字典结构1. 介绍2. 字典的实现2.1 哈希表2.2 哈希表节点2.3 字典3. 哈希算法3.1 用于计算int型哈希值的函数3.2 MurmurHash2 算法4. rehash4.1 哈希表扩容与收缩的规则5. 渐进式rehash 1. 介绍字典还有一个更为通俗的名字:map(映射),是一种用于保存键值对的抽象数据结构. 很多语言都内置了字典这种
转载 2023-08-30 08:56:37
44阅读
可能就前面的记录一下,后面的很多是截图存在Typora上。。粘过来不显示,我也懒得弄了,应该是比较完整的笔记记录了,这里只放了一小部分,有了这些完全可以自己写一个小Redis玩具了,有空试试吧简单动态字符串SDSRedis没有直接使用C语言传统的字符串表示,而使自己构建了一种名为简单动态字符串的抽象SDSC 字符串SDS获取字符串长度的复杂度为 O(N) 。获取字符串长度的复杂度为 O(1) 。A
转载 2023-08-23 13:17:22
34阅读
共读系列-《redis设计与实现》 上一章我们讲了 redis 基本类型的数据结构 和 对象系统 ,这篇来说一下单机redis 的知识点。一、数据库一个数据库在redis中就有一个结构体,而数据库的结构体是由redisServer这个结构体持有。 也就是redis服务器对应一个redisService 结构体,一个redisServer结构体持有多个re
转载 2023-08-17 17:24:35
60阅读
Redis 字典结构 文章目录Redis 字典结构1. 介绍2. 字典的实现2.1 哈希表2.2 哈希表节点2.3 字典3. 哈希算法3.1 用于计算int型哈希值的函数3.2 MurmurHash2 算法4. rehash4.1 哈希表扩容与收缩的规则5. 渐进式rehash 1. 介绍字典还有一个更为通俗的名字:map(映射),是一种用于保存键值对的抽象数据结构. 很多语言都内置了字典这种
转载 2023-08-30 08:56:36
21阅读
Redis常见架构及其原理 主从架构简单的主从架构就是一个master节点,两个slave节点。Redis主从数据如何同步?Redis主从架构同步数据分为两种情况:1、全量同步数据 2、部分数据同步。全量同步数据当slave和master建立长链接后,slave就会发送psync命令要求同步数据master接收到psync命令后,就会先执行bgsave,将内存的数据生成rdb快照在master生
转载 2023-05-30 15:07:16
92阅读
大纲:简单动态字符串SDS链表字典跳跃表整数集合压缩列表阅读本文你将收货什么:了解Redis底层的六种数据结构。了解每种数据结构的实现方式以及设计上的优点。Redis为什么这么快?作为高速KV数据库,Redis的速度已经经过各大小公司的实战考验了,至于为什么这么快,各个理由从google上一搜大同小异,今天我们来聊一聊其底层实现的六大数据结构Redis的高效与其基本的数据结构也是密不可分的,为了
  redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排
  • 1
  • 2
  • 3
  • 4
  • 5