memcached value最大限制只能是1M吗
关于memcached的value最大是1M的限制很多人都知道,但是如果你以为我还要说这个事情,那你就错了。
之前的老版本确实是只能是1M,但是根据git记录,其实2009年以后的版本这个value最大值已经是可配置的了,但是目前互联网上大多数资料,调整value最大值的方法还是去改源码。
首先看下memcached的启动参数
memcached --help | grep max-item-size
-I, --max-item-size=<num> adjusts max item size
1
2
3
4
5
在跟踪的源码(略去了无关配置项),memcached.c
static void settings_init(void) {
……
settings.item_size_max = 1024 * 1024; /* The famous 1MB upper limit. */
……
}
1
2
3
4
5
6
7
测试下
memcached --max-item-size=3145728 // 3M
1
2
3
ini_set('memcached.compression_threshold', 1024 * 1024 * 3); // 调高 php memcached扩展压缩阀值
$m = new Memcached();
$m->addServer('127.0.0.1', 11211);
$str = '';
$len = 1024 * 1024 * 2;
for ($i = 0; $i < $len; $i++) {
$str .= 'v';
}
$m->set('k', $str);
echo strlen($m->get('k'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
最后,虽然这个参数是可调整,但是还是建议用默认值,如果真的超过出现了超过1M的value,首先试试压缩(php memcached 扩展,在value超过2000的时候,默认使用fastlz压缩),如果还是大于1M,就把value分割,然后读的时候使用批量获取,比如php使用getMulti。
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$items = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
$m->setMulti($items);
$result = $m->getMulti(array('key1', 'key3', 'badkey'), $cas);
var_dump($result, $cas);
?>
---------------------
作者:安木1991
来源:CSDN
原文:https://blog.csdn.net/weixin_42900065/article/details/81513199?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
memcached value最大限制只能是1M吗的更多相关文章
- Memcached启动、关闭参数(摘录)
启动参数注释如下: -p <num> 指定服务TCP端口,默认为11211 -U <num> 指定服务UDP端口 默认11211表示打开,设置0表示关闭 -s < ...
- 基于Memcached分布式系统DRDoS拒绝服务攻击技术研究(转)
本次反射式拒绝服务攻击技术基于全球互联网分布式的Memcached服务器,需要储备一定得安全攻防知识,网络协议知识和python代码编程技术.希望在学习本篇文章知识前自行学习相关的基础知识,文章后面同 ...
- 第三方缓存软件memcached和redis异同
memcached和redis相同点:都是以键值对的形式来存储数据,通俗讲就是一个大的hashtable缓存数据都是存在内容中 key-value 不同点:memcached:1.一个key所对应的值 ...
- memcached的内存管理与删除机制
memcached的内存管理与删除机制 简介 注意:Memcache最大的value也只能是1M的空间,超过1M的数据无法保存(修改memcache源代码). 注意:内存碎片化永远都存在,只是哪一 ...
- Redis和Memcached到底有什么区别?
前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快.但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些?为什么现在看Redis要比Mem ...
- 为什么Redis要比Memcached更火?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快.但我们 ...
- redis和memcached
Redis 1.主从配置(主从复制不会阻塞master.) 1)bind 192.168.1.2(请修改成本机的IP地址,要不然,客户端无法进行访问) 2)slaveof 192.168.1.1 6 ...
- Memcached介绍及相关知识
memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...
- Redis .NET操作
Redis是一个支持数据结构更多的键值对数据库.它的值不仅可以是字符串等基本数据类型,也可以是类对象,更可以是Set.List.计数器等高级的数据结构. Memcached也可以保存类似于Set.Li ...
随机推荐
- NYOJ-676小明的求助,快速幂求模,快速幂核心代码;
小明的求助 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 小明对数学很有兴趣,今天老师出了道作业题,让他求整数N的后M位,他瞬间感觉老师在作弄他,因为这是so easy ...
- python去掉BOM头的方法
今天在写批量生成身份证号造数据的时候出现了问题,其中一个是报不能转成int型,后经查找,发现是utf-8BOM头的问题. 什么是BOM? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示 ...
- Java开发一些小的思想与功能小记(二)
1.用if+return代替复杂的if...else(if+return) public static void test1(String str) { if ("1".equal ...
- React学习及实例开发(一)——开始
本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.构建一个新项目 1.命令行运行如下命令,构建一个新的react项目 npm install -g crea ...
- loj6157 A^B Problem (并查集)
题目: https://loj.ac/problem/6157 分析: 这种树上异或,一般是采用分位考虑,但是这题即使分位,也会发现非常不好处理 这里考虑维护一个点到其根的路径的异或值 用并查集去检测 ...
- androidstudio Cannot resolve symbol 'xxx'
Android Studio 无法识别同一个 package 里的其他类,将其显示为红色,但是 compile 没有问题.鼠标放上去后显示 “Cannot resolve symbol XXX”,重启 ...
- hdu 1385 Minimum Transport Cost(floyd && 记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- [转]图解eclipse 查看原始类出现The jar file rt.jar has no source attachment
原文:http://blog.csdn.net/u011514810/article/details/53196371 ---------------------------------------- ...
- Android Studio一些简单设置
简单设置 1.默认主题设置 默认的 Android Studio 为灰色界面,能够选择使用炫酷的黑色界面. Settings --> Appearance --> Them ...
- mutex 的 可重入
在所有的线程同步方法中,恐怕互斥锁(mutex)的出场率远远高于其它方法.互斥锁的理解和基本使用方法都很容易,这里不做更多介绍了. Mutex可以分为递归锁(recursive mutex)和非递归锁 ...