
memcached
关于会飞的猪
我的github地址:https://git.oschina.net/superlike
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Memcached CAS 协议
什么是CAS协议 Memcached中的CAS(Check and Set)协议类同于Java并发的CAS(Compare and Swap)原子操作,处理同一item被多个线程更改过程的并发问题。 在Memcached中,每个key关联有一个64-bit长度的long型惟一数值,表示该key对应value的版本号。这个数值由Memcached server产生,从1开始,且转载 2015-09-10 10:12:19 · 535 阅读 · 0 评论 -
redis的持久化
定时快照方式(snapshot): 该持久化方式实际是在Redis内部一个定时器事件,每隔固定时间去检查当前数据发生的改变次数与时间是否满足配置的持久化触发的条件,如果满足则通过操作系统fork调用来创建出一个子进程,这个子进程默认会与父进程共享相同的地址空间,这时就可以通过子进程来遍历整个内存来进行存储操作,而主进程则仍然可以提供服务,当有写入时由操作系统按照内存页(page)为单位来进行原创 2015-09-23 15:55:38 · 444 阅读 · 0 评论 -
mlock家族:锁定物理内存
锁住内存是为了防止这段内存被操作系统swap掉。并且由于此操作风险高,仅超级用户可以执行。 看家族成员: #include int mlock(const void *addr, size_t len); int munlock(const void *addr, size_t len); int mlocka转载 2015-09-18 16:00:10 · 676 阅读 · 0 评论 -
memcached主线程工作线程通信机制
accept/dispatch: memcached使用"主线程统一accept/dispatch子线程"网络模型处理客户端的连接和通信,也就是《UNIX网络编程 卷1 第三版》第30章里面的第8个模型。 "主线程统一accept/dispatch子线程"的基础设施:主线程创建多个子线程(这些子线程也称为worker线程),每一个线程都维持自己的转载 2015-09-16 10:28:38 · 1652 阅读 · 0 评论 -
assoc.c
/* maintenance_cond: 用于激活睡眠的hash表维护线程 hash表维护线程: 主要用于实现对hash表的扩充(当item的数量超过桶数的3/2时),并控制数据的逐步迁移 数据的逐步迁移: 为了避免在迁移的时候worker线程增删哈希表,所以要在数据迁移的时候加锁,worker线程抢到了锁才能增删查找哈希表。memcached为了实现快原创 2015-09-14 16:25:19 · 389 阅读 · 0 评论 -
memcached CAS
memcached的锁机制 最近笔者自己的项目中,遇到了乐观锁的需求。但是redis没有这个操作,无奈,看了memcache天然的支持这种并发原语,即:GETS和CAS操作。因此准备打算继续使用REDIS,业务没有那么强的时序执行要求,因此可以使用没有CAS的算法在某种程度上解决。 我们为什么要使用这种并发原语呢?如果是单机版的,我们可以通过通过加锁同步就可以解决执行时原创 2015-09-14 18:15:35 · 838 阅读 · 0 评论 -
item
item是Memcached中抽象实际数据的结构,我们分析下item的一些特性,便于后续Memcached的其他特性分析。typedef struct _stritem { struct _stritem *next;//item在slab中存储时,是以双链表的形式存储的,next即后向指针 struct _stritem *prev;//prev为前向指针 s原创 2015-09-15 16:53:14 · 789 阅读 · 0 评论 -
epoll
什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll转载 2015-09-11 11:28:41 · 462 阅读 · 0 评论