`

Redis string的小笔记

 
阅读更多

数据结构定义:

struct sdshdr {
    long len;
    long free;
    char buf[];
};
1) buf是一个变长数组,指向真正的字符串,非指针*;
2) len存储字符串总长度,保证o(1)的长度获取操作;
3) free存储空闲字符长度.
简短精悍.

新建一个字符串:
sds sdsnewlen(const void *init, size_t initlen) {
    struct sdshdr *sh;

    sh = zmalloc(sizeof(struct sdshdr)+initlen+1);
#ifdef SDS_ABORT_ON_OOM
    if (sh == NULL) sdsOomAbort();
#else
    if (sh == NULL) return NULL;
#endif

    len = initlen;
    free = 0;
    if (initlen) {
        if (init) memcpy(buf, init, initlen);
        else memset(buf,0,initlen);
    }
    buf[initlen] = '\0';
    return (char*)buf;
}

由字符串获取原数据结构并访问:
size_t sdslen(const sds s) {
    struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
    return len;
}
这种trick在是否新建redisObject时是否使用VM也有使用.
真正的深思熟虑的代码,套用一句常用语:学习了.

 

分享到:
评论

相关推荐

    Redis全套学习笔记-带章节目录-114页.pdf

    Redis全套学习笔记 Redis是一种基于内存的NoSQL数据库,具有高性能、可扩展性和灵活性等特点。以下是Redis的详细知识点: 安装和启动 * 安装Redis可以通过下载软件包或使用yum、apt-get等安装工具进行安装。 * ...

    Redis全套学习笔记

    它支持多种数据结构,包括字符串(String)、链表(List)、哈希(Hash)、集合(Set)和有序集合(Zset),这些丰富的数据结构使得Redis在缓存、计数、发布订阅系统等多种场景下表现出色。 1. Redis 概述与安装: Redis ...

    redis的学习笔记 redis.pdf

    Redis支持的五大数据类型包括String、List、Set、Sorted Set和Hash。在本次学习笔记中,主要介绍了String类型的命令。String是最基本的类型,可以存储任何形式的数据,如二进制数据、数字或字符串。在String类型中,...

    Redis学习笔记.pdf

    Redis作为一款高性能的键值存储数据库,支持多种数据类型,包括String、List、Set、ZSet和Hash,并且提供了数据持久化的机制,包括快照(Snapshot)和AOF(Append Only File)两种方式。在Java操作方面,可以利用...

    尚硅谷周阳Redis笔记

    HyperLogLog是Redis用来做基数统计的数据结构,可以估算集合中不同元素的数量,占用空间小,但精度会随着元素数量增加而降低。 【Redis的GEO定位】 Redis 3.2版本引入了GEO(Geospatial)模块,支持经纬度坐标,...

    Redis笔记整理-五中数据类型之String和Hash

    Redis笔记整理-五中数据类型之String和Hash,这两种数据类型是我们常用语做缓存,从而减轻数据库的压力,缓存我们一般放到服务成,被多个表现成调用达到公用性

    redis学习笔记

    redis学习笔记redis 是一个开源的 key-value 数据库。它又经常被认为是一个数据结构服务器。 因为它的 value 不仅包括基本的 string 类型还有 list,set ,sorted set 和 hash 类型。当 然这些类型的元素也都是 string...

    狂神说Redis笔记.pdf

    1. String:字符串类型,是最基础的键值对,可以存储字符串、数字等。 2. List:列表,可以存储有序的字符串序列,支持两端插入和删除操作。 3. Set:集合,存储不重复的字符串,支持成员添加、删除和查询。 4. Hash...

    超详细的redis学习笔记

    ### 超详细的Redis学习笔记知识点汇总 #### 1. Redis 的启动与停止 ##### 1.1 直接启动 Redis 服务 - **默认端口启动**:使用 `$ redis-server` 命令,默认监听端口为 `6379`。 - **指定端口启动**:使用 `$ ...

    redis的安装与string类型笔记md版

    redis的安装与string类型笔记md版

    燕十八redis视频教程笔记资料

    1. 数据类型:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据类型满足了各种常见的数据存储需求。 2. 命令操作:通过Redis客户端(如`redis-...

    redis学习笔记.pdf

    Redis学习笔记 Redis是一个开源的基于键值对(Key-Value)NoSQL数据库,使用ANSI C语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的API。Redis可以被称为KV数据库,键值对数据库,内部存储...

    redis学习笔记Redis.md

    ### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...

    redis学习笔记.docx

    Redis学习笔记 Redis是基于键值对存储的NoSQL数据库,可以用来存储和检索数据。下面是Redis的基础知识点: 基础命令 * set key value:保存一个数据,重复set相同的key只会保存最新的value * get key:获取一个...

    redis笔记.docx

    - **String 字符类型**:最简单的键值对存储方式。 - **Map 散列类型**:适用于存储多个字段的键值对。 - **List 列表类型**:有序的字符串列表。 - **Set 集合类型**:无序的不重复字符串集合。 - **Sorted Set ...

    redis学习笔记.zip

    - **数据类型**:Redis中的五大数据类型包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每个类型都有其特定的用途,例如字符串用于存储简单的键值,哈希用于存储对象,列表用于...

    狂神说redis笔记

    在《狂神说Redis笔记》中,我们可以了解到Redis的各个方面,包括其入门基础、高级特性、配置详解、持久化机制、事务操作、订阅发布机制、主从复制、安装指南、哨兵模式以及与Java的集成等。同时,笔记还探讨了为什么...

    redis笔记+资料

    这份“redis笔记+资料”提供了全面的学习资源,非常适合初学者掌握 Redis 的基础知识和常见用法。 Redis 的主要特点包括: 1. **内存存储**:Redis 将所有数据存储在内存中,读写速度极快,但这也意味着它不适合...

    后端+Redis+Redis笔记+加深记忆

    1. **基本概念**:Redis支持的数据类型包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据类型为各种应用场景提供了基础。 2. **持久化机制**:Redis提供RDB(快照)和AOF...

Global site tag (gtag.js) - Google Analytics