Web缓存
-
nuster - nuster cache
-
varnish - varnish cache
-
squid - squid cache
Memcached
-
《Memcached 教程》
-
《深入理解Memcached原理》
-
采用多路复用技术提高并发性。
-
slab分配算法:memcached给Slab分配内存空间,默认是1MB。分配给Slab之后 把slab的切分成大小相同的chunk,Chunk是用于缓存记录的内存空间,Chunk 的大小默认按照1.25倍的速度递增。好处是不会频繁申请内存,提高IO效率,坏处是会有一定的内存浪费。
-
《Memcached软件工作原理》
-
《Memcache技术分享:介绍、使用、存储、算法、优化、命中率》
-
《memcache 中 add 、 set 、replace 的区别》
区别在于当key存在还是不存在时,返回值是true和false的。
- 《memcached全面剖析》
Redis
-
《Redis 教程》
-
《redis底层原理》
-
使用 ziplist 存储链表,ziplist是一种压缩链表,它的好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。
-
使用 skiplist(跳跃表)来存储有序集合对象、查找上先从高Level查起、时间复杂度和红黑树相当,实现容易,无锁、并发性好。
-
《Redis持久化方式》
-
RDB方式:定期备份快照,常用于灾难恢复。优点:通过fork出的进程进行备份,不影响主进程、RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。缺点:会丢数据。
-
AOF方式:保存操作日志方式。优点:恢复时数据丢失少,缺点:文件大,回复慢。
-
也可以两者结合使用。
-
《分布式缓存–序列3–原子操作与CAS乐观锁》
架构
《Redis单线程架构》
回收策略
《redis的回收策略》
Tair
- 官方网站
《Tair和Redis的对比》
-
特点:可以配置备份节点数目,通过异步同步到备份节点
-
一致性Hash算法。
-
架构:和Hadoop 的设计思想类似,有Configserver,DataServer,Configserver 通过心跳来检测,Configserver也有主备关系。
-
几种存储引擎:
-
MDB,完全内存性,可以用来存储Session等数据。
-
Rdb(类似于Redis),轻量化,去除了aof之类的操作,支持Restfull操作
-
LDB(LevelDB存储引擎),持久化存储,LDB 作为rdb的持久化,google实现,比较高效,理论基础是LSM(Log-Structured-Merge Tree)算法,现在内存中修改数据,达到一定量时(和内存汇总的旧数据一同写入磁盘)再写入磁盘,存储更加高效,县比喻Hash算法。
-
Tair采用共享内存来存储数据,如果服务挂掉(非服务器),重启服务之后,数据亦然还在。
其它更多内容,请大家自行前往阅读。
如果你进阶的路上缺乏方向,可以点击我的【Github】加入我们的圈子和安卓开发者们一起学习交流!
以下全部内容都可以在GitHub中获取!
-
Android进阶学习全套手册
-
Android对标阿里P7学习视频
-
BATJ大厂Android高频面试题
最后,借用我最喜欢的乔布斯语录,作为本文的结尾:
人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。 你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。 最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。