- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
Memcached 支持许多平台:Linux、FreeBSD、Centos、Ubuntu 、Solaris、Mac OS
当然也支持安装在 Windows 上
Linux 系统安装 Memcached,首先要先安装 libevent 库
sudo apt-get install libevent libevent-devel
yum install libevent libevent-devel
portmaster databases/libevent databases/libevent-devel
brew install libevent
sudo apt-get install memcached
yum install memcached
portmaster databases/memcached
brew install libmemcached memcached
从[官方网站 (http://memcached.org)][_ _http_memcached.org] 下载 Memcached 最新版本
截止今日,最新版本地址为 http://memcached.org/files/memcached-1.5.1.tar.gz
以下命令要一条一条执行,忽略 # 开头的注释
# 下载最新版本
wget http://memcached.org/files/memcached-1.5.1.tar.gz
# 解压缩
tar -zxvf memcached-1.5.1.tar.gz
# 进入目录
cd memcached-1.5.1
# 配置编译文件
./configure --prefix=/usr/local/memcached
# 编译
make && make test
# 安装
sudo make install
$ which memcached
输出结果
/usr/local/bin/memcached
Memcached命令的运行:
$ /usr/local/bin/memcached -h
启动选项: 概览
从终端输入以下命令,启动 memcached:
/usr/local/bin/memcached -p 11211 -m 128m
当然你可以使用 -vv 来显示调试信息, v 越多显示的调试信息就越多
/usr/local/bin/memcached -p 11211 -m 128m -vv
输出
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 120 perslab 8738
slab class 3: chunk size 152 perslab 6898
slab class 4: chunk size 192 perslab 5461
slab class 5: chunk size 240 perslab 4369
slab class 6: chunk size 304 perslab 3449
slab class 7: chunk size 384 perslab 2730
slab class 8: chunk size 480 perslab 2184
slab class 9: chunk size 600 perslab 1747
slab class 10: chunk size 752 perslab 1394
slab class 11: chunk size 944 perslab 1110
slab class 12: chunk size 1184 perslab 885
slab class 13: chunk size 1480 perslab 708
slab class 14: chunk size 1856 perslab 564
slab class 15: chunk size 2320 perslab 451
slab class 16: chunk size 2904 perslab 361
slab class 17: chunk size 3632 perslab 288
slab class 18: chunk size 4544 perslab 230
slab class 19: chunk size 5680 perslab 184
slab class 20: chunk size 7104 perslab 147
slab class 21: chunk size 8880 perslab 118
slab class 22: chunk size 11104 perslab 94
slab class 23: chunk size 13880 perslab 75
slab class 24: chunk size 17352 perslab 60
slab class 25: chunk size 21696 perslab 48
slab class 26: chunk size 27120 perslab 38
slab class 27: chunk size 33904 perslab 30
slab class 28: chunk size 42384 perslab 24
slab class 29: chunk size 52984 perslab 19
slab class 30: chunk size 66232 perslab 15
slab class 31: chunk size 82792 perslab 12
slab class 32: chunk size 103496 perslab 10
slab class 33: chunk size 129376 perslab 8
slab class 34: chunk size 161720 perslab 6
slab class 35: chunk size 202152 perslab 5
slab class 36: chunk size 252696 perslab 4
slab class 37: chunk size 315872 perslab 3
slab class 38: chunk size 394840 perslab 2
slab class 39: chunk size 493552 perslab 2
slab class 40: chunk size 616944 perslab 1
slab class 41: chunk size 771184 perslab 1
slab class 42: chunk size 1048576 perslab 1
<17 server listening (auto-negotiate)
<18 server listening (auto-negotiate)
<19 send buffer was 9216, now 3728270
<19 server listening (udp)
<20 server listening (udp)
<23 send buffer was 9216, now 3728270
<22 server listening (udp)
<21 server listening (udp)
<25 server listening (udp)
<23 server listening (udp)
<24 server listening (udp)
<26 server listening (udp)
我们看到 128m 的内存被分成了 42 个 slab
-vv 是显示了调试信息,调试信息的内容大部分是关于存储的信息
$ /usr/local/bin/memcached -p 11211 -m 128m -d
或者
/usr/local/bin/memcached -d -m 64M -u nobody -l 192.168.0.8 -p 11211 -c 256 -P /tmp/memcached.pid
建议不要使用 -u root
命令 | 描述 |
---|---|
-p <num> | 监听的TCP端口(默认: 11211) |
-U <num> | 监听的UDP端口(默认: 11211, 0表示不监听) |
-s <file> | 用于监听的UNIX套接字路径(禁用网络支持) |
-a <mask> | UNIX套接字访问掩码,八进制数字(默认:0700) |
-l <ip_addr> | 监听的IP地址。(默认:INADDR_ANY,所有地址) |
-d | 作为守护进程来运行 |
-r | 最大核心文件限制 |
-u <username> | 设定进程所属用户。(只有root用户可以使用这个参数) |
-m <num> | 所有slab class可用内存的上限,以MB为单位。(默认:64MB) (译者注:也就是分配给该memcached实例的内存大小。) |
-M | 内存用光时报错。(不会删除数据) |
-c <num> | 最大并发连接数。(默认:1024) |
-k | 锁定所有内存页。注意你可以锁定的内存上限。 试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。 不是前面的 -u <username> 参数;在sh下,使用命令”ulimit -S -l NUM_KB”来设置 |
-v | 提示信息(在事件循环中打印错误/警告信息。) |
-vv | 详细信息(还打印客户端命令/响应) |
-vvv | 超详细信息(还打印内部状态的变化) |
-h | 打印这个帮助信息并退出 |
-i | 打印memcached和libevent的许可 |
-P <file> | 保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义 |
-f <factor> | 不同slab class里面的chunk大小的增长倍率。(默认:1.25) 译者注:每个slab class里面有相同数量个slab page,每个slab page里面有chunk,且在当前slab class内的chunk大小固定。 而不同slab class里的chunk大小不一致,具体差异就是根据这个参数的倍率在增长,直到分配的内存用尽 |
-n <bytes> | chunk的最小空间(默认:48) chunk数据结构本身需要消耗48个字节,所以一个chunk实际消耗的内存是n+48 |
-L | 尝试使用大内存页(如果可用的话) 提高内存页尺寸可以减少”页表缓冲(TLB)”丢失次数,提高运行效率 为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块 |
-D <char> | 使用 <char> 作为前缀和ID的分隔符 这个用于按前缀获得状态报告。默认是”:”(冒号) 如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令”stats detail on”来开启。 |
-t <num> | 使用的线程数(默认:4) |
-R | 每个连接可处理的最大请求数 |
-C | 禁用CAS |
-b | 设置后台日志队列的长度(默认:1024) |
-B | 绑定协议 – 可能值:ascii,binary,auto(默认) |
-I | 重写每个数据页尺寸。调整数据项最大尺寸 |
memcached 能否充分利用多核?或者有什么办法可以调整这个? 最佳答案 默认情况下,memcached 是多线程的,并且在使许多内核饱和时没有问题。在更大规模的并行机器(例如 256 核 CMT
有没有办法根据通配符键使内存缓存中的条目无效? 因此,如果我有以下内存缓存键: data/1 data/2 data/3 有没有一种方法可以使这些 key 失效,例如 data/* ?一口气清除一堆陈
Memcache 可以配置为使用磁盘存储而不是 RAM 吗? 我在 High IO Amazon EC2 实例上运行 Memcache Server。该实例有 2TB 的 SSD 存储可用。我可以将
memcached 的最大 key 过期时间是多少? 如果我不提供过期时间并且缓存已满,会发生什么? 最佳答案 您可以通过提供 Unix 时间戳而不是天数来将 key 过期设置为某个日期。该日期可以是
我有一个运行 php/mysql 的网站。该应用程序将被多次“复制”。每个实例都会获得自己的数据库、一组 php 文件(通配符)域,您明白了。 现在应用程序的某些部分是使用 memcache 进行缓存
是否可以根据某些正则表达式获取 memcached key 列表?我知道一种解决方案是将 key 存储在数据库中,并在需要删除这些 key 时获取列表。这意味着,它将给数据库带来额外的成本。 我想知道
我们发现使用我们的 memcache 时,一些键往往会丢失。为了调试,我使用命令 stats cachedump 输出是这样的: ITEM key-stuff-123-mlgtr-tmura [5
从 Network Solutions 移至托管站点,出现错误 fatal error :第 6 行 上/data/.../include/connect.inc 中未找到类“Memcache” 我该
我遵循了这个 tutorial 中的说明关于如何安装 nginx、php 和 mysql,包括 php5-memcache。 我想知道我是否还需要安装没有“php5”前缀的 memcache 或 me
我在 ubuntu 12.04 上运行 apache/php/memcached 我设置的 key 在过期后仍然有效。我们使用的代码与我们从中迁移的内存缓存 PAAS 的代码相同。 我如何确认过期实际
假设我在开始时有两个 memcached 节点( 节点 A, B ),当我添加一个新的 时节点 C ,部分键被重新映射,并且由于一致散列只有其中一些。 让我们假设一个键为“ foo ”的值原来在服务器
真的,我只想知道memcached中的slab是什么。如果有认识的同事能回答我的话会更好。 谢谢你的回答... 最佳答案 长时间运行的应用程序(如 memcached)会遇到内存碎片问题,服务运行时间
在 memcached 概述中 here 它说: Memcached servers are generally unaware of each other. There is no crosstal
当您在 memcached 中放入一个值时,您可以设置一个过期时间。 但是,当您增加一个值时,您不能(至少不是来自 PHP )设置新的到期时间。 我的问题:到期时间是否在递增时重置为其初始值?或者它没
我在我的 centos 服务器上使用 memcached,我的项目很大并且有超过 1MB 的对象我需要保存到 memcached,好吧,我不能!因为 max_item_size 是 1MB,无论如何要
我尝试使用本教程在 MAMP - Snow Leopard 10.6.2 中安装 memcached: Setup a Memcached-Enabled MAMP Sandbox Environme
我试图添加的方式 -l 11211 -l 11212 在 memcached conf 文件中。但它只是在听第一个,即 1121 最佳答案 首先我使用了 mikewied 的解决方案,但后来我遇到了自
我希望记录我的 memcached 服务器中正在进行的所有事件。所有读取和写入。 这将用作云中许多远程 php 应用程序的分布式守护程序,并且需要一种通过 SSH 登录并检查守护程序上正在进行的事件的
我在使用 memcached 时遇到了一些问题,我的一个想法是它可能已经在我尝试运行它的端口上运行,由我们网络上的其他用户启动。有没有办法知道当前正在使用哪些 memcached 端口? 最佳答案 要
运行 4 个 .5GB 内存缓存服务器或运行一个 2GB 实例有什么区别吗? 运行多个实例有什么好处吗? 最佳答案 如果一个实例失败,您仍然可以享受使用缓存的优势。如果您使用一致性哈希将相同的数据引入
我是一名优秀的程序员,十分优秀!