Linux c 开发 - Memcached源码分析之消息回应(3) 发布时间: 2021-10-18 10:13:57 评论数: 0
前言 上一章《Linux c 开发 - Memcached源码分析之命令解析(2)》,我们花了很大的力气去讲解Memcached如何从客户端读取命令,并且解析命令,然后处理命令并且向客户端回应消息。 这一章,我们主要来讲解Memcached回应消息的技术细节。 本章前,我们先需要了解几个知识点(msghdr和iovc)。 msghdr结构:struct msghdr { void *msg_name; socklen_t msg_namelen; struct iovec *msg_iov; size_t msg_ ......
PHP+Mamcached分布式部署方案设计 发布时间: 2021-10-16 12:43:30 评论数: 0
一台Mamcache通常不能满足我们的需求,这就需要分布式部署。Mamcached分布式部署方案通常会采用两种方式,一种是普通Hash分布,一种是一致性Hash分布。本篇将以PHP作为客户端,来分析两种方案。 一、普通Hash分布:<?php function test($key='name'){ $md5 = substr(md5($key), 0, 8); $seed = 31; $hash = 0; for($i=0; $i<8; $i++){ $hash = $hash * $seed + ord( ......
启用及使用MemCached的SASL认证 发布时间: 2021-10-15 05:56:09 评论数: 0
Memcached从1.4.3版本开始,能支持SASL认证 比较适合多个应用共用一个memcached集群 需要在编译时,加上–enable-sasl选项 启动memcached时,增加-S的选项./configure –prefix=%{datadir}  –enable-sasl /usr/local/bin/memcached -S -d -u nobodySASL认证也可以有很多种认证机制,比如pam,shadow,ldap等 下面配置成使用shadow方式去认证#修改/etc/sysconfig/saslauthd文件 MECH=shadow #设置用户的SASL认证 ......
Linux c 开发 - Memcached源码分析之总结篇(8) 发布时间: 2021-10-13 23:32:53 评论数: 0
Memcached源码分析共8篇文章,前7篇文章主要分析每个模块的c源代码。这一篇文章主要是将之前的流程串起来,总结和回顾。同时通过这篇文章可以全局去看Memcached的结构。 Memcache的网络模型 1. Memcached主要是基于Libevent 网络事件库进行开发的。 2. Memcached的网络模型分为两部分:主线程和工作线程。主线程主要用来接收客户端的连接信息;工作线程主要用来接管客户端连接,处理具体的业务逻辑。默认情况下会开启8个工作线程。 3. 主线程和工作线程之间主要是通过pipe管道来进行通信。当主线程接收到客户端的连接的时候,会通过轮询的方式选择一 ......
PHP+Medoo+Memcached简单的微信回复数字投票程序 发布时间: 2021-10-10 21:00:45 评论数: 0
16年帮朋友写的一个简单的投票,因为线上他使用的是小猪cms的投票,结果并发高了直接挂了。SO,我给他搞了一个简单版的。今天清理电脑的时候,突然看到,删了可惜,留着无用。。。在此分享啦<?php header("Content-type: text/html; charset=utf-8"); error_reporting(0); if($_GET['echostr']){ $_token = "lvtao.net"; $echoStr = $_GET['echostr']; $nonce = $_GET['nonce']; ......
Linux c 开发 - Memcached源码分析之LRU算法(6) 发布时间: 2021-10-08 23:12:09 评论数: 0
前言 上一章《Linux c 开发 - Memcached源码分析之增删改查操作(5) 》中,我们讲到了SET命令的操作。当客户端向Memcached服务端SET一条缓存数据的时候,会将生成的Item地址挂到LRU的链表结构上。这一章节,我们主要讲一下Memcached是如何使用LRU算法的。LRU:是Least Recently Used 近期最少使用算法。Memcached的LRU算法分析 Memcached的LRU几种策略 1. 惰性删除。memcached一般不会主动去清除已经过期或者失效的缓存,当get请求一个item的时候,才会去检查item是否失效。 2. flu ......
Linux c 开发 - Memcached源码分析之基于Libevent的网络模型(1) 发布时间: 2021-10-06 14:05:23 评论数: 0
关于Memcached: memcached是一款非常普及的服务器端缓存软件,memcached主要是基于Libevent库进行开发的。Memcached分析 1.  网络模型流程分析 Memcached主要是基于Libevent的事件库来实现网络线程模型的。我们先需要下载memcached的源码包,上面我们已经给出了源码包下载地址。 Memcached的网络线程模型主要涉及两个主要文件:memcached.c 和thread.c文件。 我们这边主要分析tcp的模型。memcached也支持udp。 流程 1. memcached首先在主线程中会创建main_base,memc ......
德国社交网站Poppen.de百万级PHP网站架构分析 发布时间: 2021-10-04 13:48:17 评论数: 0
在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网 站架构:Poppen.de。Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架 构,融合了很多技术,如 Nigix、MySQL、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung。Poppen.de目前有200万注册用户数、2万并发用户数、每天20万条私有消息、每天25万登录次数。而项目团队有11个开发人员,两个设计,两个系统管理员。该站点的商业模式采 ......
Linux c 开发 - Memcached源码分析之命令解析(2) 发布时间: 2021-10-01 16:34:57 评论数: 0
前言 从我们上一章《Linux c 开发 - Memcached源码分析之基于Libevent的网络模型(1)》我们基本了解了Memcached的网络模型。这一章节,我们需要详细解读Memcached的命令解析。 我们回顾上一章发现Memcached会分成主线程和N个工作线程。主线程主要用于监听accpet客户端的Socket连接,而工作线程主要用于接管具体的客户端连接。 主线程和工作线程之间主要通过基于Libevent的pipe的读写事件来监听,当有连接练上来的时候,主线程会将连接交个某一个工作线程去接管,后期客户端和服务端的读写工作都会在这个工作线程中进行。 工作线程也是基 ......
Windows下安装Memcached服务端 发布时间: 2021-09-28 09:08:00 评论数: 0
下载程序:Memcached for windows.rar解压放在某路径下,比如:d:Memcached进入命令行,切换到d:memcached,输入memcached -d install命令。进入windows服务列表中可以看到多了一个memcached Server服务。输入memcached -d start,启动memcached Server。停止server:memcached -d stop.卸载server:memcached -d unistall.修改启动参数:首先停止Server。win->运行(快捷键:windows键+R键)中输入regedi ......
OSXYosemite10.10.4下使用MacPorts安装nginx+php+mysql+memcached环境配置 发布时间: 2021-09-26 10:03:33 评论数: 0
折腾了我大半天!总算搞定macPorts安装不多介绍xcode-select install下载DMG,直接安装!https://www.macports.org/install.php一个命令全搞定sudo port install php55 php55-fpm php55-curl php55-exif php55-gd php55-gettext php55-iconv php55-mbstring php55-mcrypt php55-mysql php55-memcache php55-odbc php55-opcache php55-openssl php55-p ......
Linux c 开发 - Memcached源码分析之存储机制Slabs(7) 发布时间: 2021-09-23 21:29:04 评论数: 0
前言 前几章节我们介绍了Memcached的网络模型,命令行的解析,消息回应,HashTable,Memcached的增删改查操作以及LRU算法模块。 这一章我们重点讲解Memcached的存储机制Slabs。Memcached存储Item的代码都是在slabs.c中来实现的。 在解读这一章前,我们必须先了解几个概念。 Item 缓存数据存储的基本单元 1. Item是Memcached存储的最小单位 2. 每一个缓存都会有自己的一个Item数据结构 3. Item主要存储缓存的key、value、key的长度、value的长度、缓存的时间等信息。 4. HashTable和L ......
Linux c 开发 - Memcached源码分析之增删改查操作(5) 发布时间: 2021-09-21 21:32:37 评论数: 0
前言 在第二章《Linux c 开发 - Memcached源码分析之命令解析(2)》 和第三章《Linux c 开发 - Memcached源码分析之消息回应(3)》 中我们主要通过Memcached的get命令,分析了Memcached的命令解析和消息回应的模块功能。这一章,我们主要来详细看一下Memcached常用的增删改查操作。在看Memcached的增删改查操作前,我们先来看一下process_command方法。Memcached解析命令之后,就通过process_command方法将不同操作类型的命令进行分发。//命令处理函数 //前一个方法中,我们找到了r ......
Linux c 开发 - libevent 发布时间: 2021-09-19 20:07:43 评论数: 0
Libevent介绍 libevent是一个事件触发的网络库,适用于windows、Linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。 libevent官方网站 http://libevent.org/ 英文文档 http://www.wangafu.net/~nickm/libevent-book/ 中文文档 http://www.cppblo ......
Linux c 开发 - Memcached源码分析之HashTable(4) 发布时间: 2021-09-16 22:39:00 评论数: 0
前言 上一章我们讲解了Memcached的消息回应机制《Linux c 开发 - Memcached源码分析之消息回应(3)》。从这一章开始我们慢慢讲解Memcached是如何存储数据的。 讲解本章前,我们先看一个Memcached存储数据的item的基本结构。 //item的具体结构 typedef struct _stritem { //记录下一个item的地址,主要用于LRU链和freelist链 struct _stritem *next; //记录下一个item的地址,主要用于LRU ......


友情链接: php5000技术知识分享 github 码云 开源中国 csdn linux中国 阿里云 unix技术网 composer中文网 php packagist php python 安卓软件 大众源码 DevStore 猪八戒威客网 人人都是产品经理 PHPwind论坛 互联网的一些事 新客网 黑马程序员 火星时代 hao123it ThinkSNS 开源社区 51CTO学院 办事儿网 IT论坛 java教程 最代码 程序员客栈 大数据培训 小程序开发 微信小程序 php开发新闻 微信小程序 java学习 微信小程序 Linux书籍 网站ip流量 xw素材网 新浪云 腾讯云 华为云 百度 新浪 网易 淘宝 腾讯 1688 搜狐 优酷 房天下 hao123 携程 天涯社区