文档章节

memcached value最大限制只能是1M吗

anoty
 anoty
发布于 08/08 17:47
字数 450
阅读 273
收藏 4

关于memcached的value最大是1M的限制很多人都知道,但是如果你以为我还要说这个事情,那你就错了。

之前的老版本确实是只能是1M,但是根据git记录,其实2009年以后的版本这个value最大值已经是可配置的了,但是目前互联网上大多数资料,调整value最大值的方法还是去改源码。

首先看下memcached的启动参数


memcached --help | grep max-item-size

-I, --max-item-size=<num> adjusts max item size

在跟踪的源码(略去了无关配置项),memcached.c


static void settings_init(void) {
    ……
    settings.item_size_max = 1024 * 1024; /* The famous 1MB upper limit. */
    ……
}

测试下


memcached --max-item-size=3145728 // 3M


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'));

最后,虽然这个参数是可调整,但是还是建议用默认值,如果真的超过出现了超过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);
?>

更多架构、PHP、GO相关踩坑实践技巧请关注我的公众号:PHP架构师

© 著作权归作者所有

共有 人打赏支持
anoty
粉丝 23
博文 37
码字总数 23921
作品 0
浦东
memcached工作原理与优化建议

工作原理 基本概念:slab,page,chunk。 slab,是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同slab有不同的chunk size。具体分配多少...

Liuxd
2012/06/20
0
1
Redis与Memcached的区别

memcached和redis的区别 区别: 1、数据类型不同,memcached只支持key-value,redis支持String,List,Map,set,sorted Set 2、memcached保存在内存中,redis内存和文件里面都有保存,宕机之...

underA
2013/05/15
0
0
memcached(windows)安装与配置

关键字:memcached(windows)安装与配置 1. 下载windows版本的Memcached:http://code.jellycan.com/memcached/ 2.解压之后放在硬盘的目录下,如:D:memcached . 然后在运行中输入cmd进入命...

qzxun
2014/07/21
0
0
关于Memcache与Redis

本文尝试总结Memcache与Redis之间的相同点及不同点,以及关于两者的一些注意问题。 相同 同为内存型数据库 当数据写满后均以LRU机制替换数据 分布式支持 不同 Memcache 多线程 最大key为512...

ZoaChou
2016/06/06
108
0
Memcached 集群架构方面的问题

集群架构方面的问题 o memcached是怎么工作的? o memcached最大的优势是什么? o memcached和MySQL的query cache相比,有什么优缺点? o memcached和服务器的local cache(比如PHP的APC、m...

李长春
2012/01/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部