php memcache hash方法均衡性测试

支持两种hash方法: crc32 fnv

配置如下:

;  Hash function {crc32, fnv}

memcache.hash_function=fnv

set key脚本:

<?php

$cluster = array(
	array(‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘11211‘),
	array(‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘11212‘),
	array(‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘11213‘),
	array(‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘11214‘),
	array(‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘11215‘),
	);

$memcache = new Memcache;
foreach ($cluster as $mc) {
	$host = $mc[‘host‘];
	$port = $mc[‘port‘];
	if ($memcache->addServer($host, $port)) {
		echo "Add $host:$port to cluster\n";
	} else {
		echo "Failed to add $host:$port to cluster\n";
	}
}

$ok = 0;
for ($n=1; $n <= 200000 ; $n++) { 
	$key = "k".$n;
	if (! $memcache->set($key, 1)) {
		echo "Failed to set $key\n";
	} else {
		$ok ++;
	}
	if ($n % 100 == 0) {
		echo "Completed set $n key to cache\n";
	}
}

echo "Set OK: $ok\n";
$memcache->close();

?>

启动cache脚本:

#!/bin/bash

pkill memcached
if [ $? == 0 ];then
	echo "kill all memcached"
else
	echo "failed to kill cached"
	exit 1
fi
memcached -d -p 11211 -u memcached -m 64 -c 1024 &
memcached -d -p 11212 -u memcached -m 64 -c 1024 &
memcached -d -p 11213 -u memcached -m 64 -c 1024 &
memcached -d -p 11214 -u memcached -m 64 -c 1024 &
memcached -d -p 11215 -u memcached -m 64 -c 1024 &

sleep 1
ps aux | grep memcached

结果检查脚本:

#!/bin/bash

T11211=`echo stats | nc 127.0.0.1 11211 | grep cmd_set | awk ‘{print $3}‘`
T11212=`echo stats | nc 127.0.0.1 11212 | grep cmd_set | awk ‘{print $3}‘`
T11213=`echo stats | nc 127.0.0.1 11213 | grep cmd_set | awk ‘{print $3}‘`
T11214=`echo stats | nc 127.0.0.1 11214 | grep cmd_set | awk ‘{print $3}‘`
T11215=`echo stats | nc 127.0.0.1 11215 | grep cmd_set | awk ‘{print $3}‘`

echo "11211 = $T11211"
echo "11212 = $T11212"
echo "11213 = $T11213"
echo "11214 = $T11214"
echo "11215 = $T11215"

最终结果对比:

crc32:

11211 = 51180

11212 = 47519

11213 = 26179

11214 = 29082

11215 = 46040

fnv:

11211 = 47085

11212 = 35358

11213 = 49721

11214 = 18787

11215 = 49049

时间: 2024-10-05 21:09:59

php memcache hash方法均衡性测试的相关文章

NSObject的hash方法

说明 本示例仅仅演示一个对象什么时候执行hash方法. 细节 1. 必要的Model类,重载了hash方法用以反映Hash方法是否被调用了 2. 测试 // // ViewController.m // Hash // // Created by YouXianMing on 16/4/15. // Copyright © 2016年 YouXianMing. All rights reserved. // #import "ViewController.h" #import &quo

基于hash的AB测试

AB测试 为同一个目标,设计两种方案,将两种方案随机投放市场中,让组成成分相同(相似)用户去随机体验两种方案之一,根据观测结果,判断哪个方案效果更好. 基于hash的AB测试 具体的实现方法为: 在AB测试中需要将用户随机的分成两组,通过对每个用户唯一id做hash运算,并对hash值对2取模,便可以将用户分成0,1两组(分桶测试便是hahs对n取模). 每组采用不同的策略,并定义一个策略Id,跟随不同的策略埋点,在最后回收策略Id,最后通过策略id分析ab两种策略的好坏. golang中的ha

Memcache所有方法及参数详解

memcache函数所有的方法列表如下: 参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值,如果已经存在,则返回false Memcache::addServer - 添加一个可供使用的服务器地址 Memcache::close - 关闭一个Memcache对象 Memcache::connect - 创建一个Memcache对象 memcache_debug - 控制调试功能 Memca

将session存入数据库,memcache的方法

//存入数据库 <?phpif(!$con = mysql_connect('localhost','root','123456')){    die('连接数据库失败');}$link = mysql_select_db('session');//session入库function open($save_path,$session_name){    return true;}function close(){    }function read($id){    //查询的sql语句    

spring3.0框架检测方法运行时间测试(转)

主要利用了Spring AOP 技术,对想要统计的方法进行横切处理,方法执行前开始计时,方法执行后停止计时,得到计时方法就是该方法本次消耗时间. 步骤: 首先编写自己的Interceptor类来实现MethodInterceptor类,来用于切入方法,运行计时代码 Spring AOP 的XML配置,配置需要监测的方法和切入方法(自定义的Interceptor) 1.自定义Intercept拦截器 package com.utis.intercept; import java.util.Hash

HASH方法课下补分博客

课堂要求:利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75)关键字集合:85,75,57,60,65,(你的8位学号相加值),98,74,89,12,5,46,97,13,69,52,92.完成计算并提交计算过程. 实践要点:通过课上对hash方法以及散列函数的学习,了解散列冲突的机制,并学习解决散列冲突的方法.主要学习和实践的方法是开放地址法和拉链法,首先需要理解这两种方法的实现过程,然后运用到实际的题目中去解决

数组去重--hash方法

hash方法我以前百度找到的,经常用性能好速度快,本文章主要是一步步解释hash方法的过程(其实没多少步) 在这里就能看出每个自定义下标都是独一无二的,其实就相当于数组arr已经去重了 剩下我们就需要把自定义下标给抽取出来放在新数组 代码就这么点,就这么简单,分两步的目的是想简单解释去重过程. 原文地址:https://www.cnblogs.com/konghaowei/p/10907325.html

Memcache Hash算法揭秘

 序 在大型互联网应用架构中,通常由多台Memcache缓存服务器来构建Memcache集群,也叫做分布式Memcache.数据在写入缓存和从缓存中读取时,都会采用某中Hash算法,将数据Hash到某台具体的Memcache上,为了使应用在线的动态增加和移除Memcache服务器而不影响或很少影响其他已部署的Memcache服务器(也就是其他Memcache服务器中缓存的数据还能正常使用),这种Hash算法被称作为一致性Hash. 由一篇文章---Memcache分布式实现原理我们知道,Ja

Hash的一点测试

哈希表的学习与测试 以前写的hash都是碰运气的hash,就是乘上质数取模的那种,这样不能保证不碰撞,所以今天先写上几个双hush和链表的hash,并比较一下他们的速度,测试的话用洛谷上的“字符串哈希”题目进行测试. Hash1:碰撞三个点 用时352ms /* 这个是只进行一次取质数的hash    第一次尝试    取key值127  mod值 10000000 */ Hash2:碰撞三个点 用时360ms /* 这个也是只进行一次取质数的           hush key值131