SDS(Simple Dynamic Strings)是一个C语言字符串库,设计中增加了从堆上分配内存的字符串,来扩充有限的libc字符处理的功能,使得: 这和在你的项目中拷贝sds.c和sds.h文件一样简单。代码很小,每个C99编译器应该都不带任何问题地搞定。 使用更简便 二进制安全 计算更有效率 而且仍旧…兼容一般的C字符串功能 https://github.com/antirez/sds
有序数组可以快速索引,但是增删困难 链表可以快速增删,但是索引困难 结合两者的优点,以时间换空间,用数组索引部分数据,链表存数据,索引还可以多层,或者直接用链表多层索引,就是跳表。 经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。目前开源软件 Redis 和 LevelDB 都有用到它, 它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单。 跳跃表的性质;
https://github.com/aappleby/smhasher 看Jedis的主键分区哈希时,看到了名字很萌很陌陌的MurmurHash,谷歌一看才发现Redis,Memcached,Cassandra,HBase,Lucene都用它。 其实是 multiply and rotate的意思,因为算法的核心就是不断的”x *= m; x = rotate_left(x,r);” MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc++、nginx、libmemcached等开源系统。2011年Appleby被Google雇佣,随后Google推出其变种的CityHash算法。 官方网站:https://sites.google.com/site/murmurhash/ MurmurHash算法,自称超级快的hash算法,是FNV的4-5倍。
PHP的缓存有很多种,包括输出缓冲(ob系列函数),opcode缓存(APC,eAccelerator,XCache等扩展实现),这些大家已经很熟悉了,接下来介绍一下一个不太被人注意的PHP缓存机制:realpath_cache。