`

redis 简单动态字符串和链表实现原理

阅读更多
简单动态字符串:

struct{
   int len
   int free
   char buf[];
}

简单动态字符串比 C 中字符串的优点:

1.可以很快的获取字符串的长度
2.在进行字符串操作时,防止溢出
3.减少修改字符串时带来的频繁内存分配

链表:


struct listNode{
    listNode * prev;
    listNode * next;
    void * value;
}

typedef struct list{
    // 表头节点
    listNode * head;
    // 表尾节点
    listNode * tail;
    //  链表所包含的节点数量
    unsigned long len;
    // 节点值复制函数
    void *(*dup)(void * ptr);
    // 节点值释放函数
    void (*free)(void * ptr);
    // 节点值对比函数
    int (*match)(void *ptr, void *key)
}

仔细看下,这个是不是和 数据结构中实现的链表是不是很像.
但是这里用到了指向函数的指针,进行了对象化的封装.
1
0
分享到:
评论

相关推荐

    linux下redis-4.0.14.zip下载

    Redis 安装1、Redis的数据类型: 字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的独特之处: (1)redis可以用来做存储(storge)、而memcache是来做缓存...

    redis 下载安装

    Redis 安装1、Redis的数据类型: 字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的独特之处: (1)redis可以用来做存储(storge)、而memcache是来做缓存...

    Redis设计与实现

    Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己创建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示 在Redis里面,C字符串只会作为字符串字面量用在一些...

    redis 缓存技术学习笔记

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    Redis-x64-5.0.10

    windows下redis安装包。 redis是一个key-value存储系统。...和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)

    redis所用jar包

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    Redis可视化工具安装包(redis管理视图)

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    Java操作Redis的多种数据类型

    使用Java操作Redis的字符串类型、list链表类型、hash哈希表类型、set无序集合类型的数据,简单易懂。

    Redis帮助类,为基本的设置数据和取数据

    * list是字符串列表,其内部是用双向链表实现的,因此在获取/设置数据时可以支持正负索引 * 也可以将其当做堆栈结构使用 * * hash类型是一种字典结构,也是最接近RDBMS的数据类型,其存储了字段和字段值的映射...

    redis学习pdf

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis学习相关资料

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis内置安装步骤

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    Redis实战开发文档

    和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list(链表)、 set(集合)和 zset(有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些...

    Redis7.0.11版本安装包

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    redis-2.2.2 (源码)

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    java操作redis所需jar包五个

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    Redis实战 中文.pdf

    包括 string(字符串)、list(链表)、set(集合)和 zset(有序集合)。这些数据类型都支持 push/pop、 add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础 上,Redis 支持各种不同方式的...

    redis架构图

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redisCluster.zip

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis 源代码

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

Global site tag (gtag.js) - Google Analytics