阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

memcache启动以及telnet命令详解

170次阅读
没有评论

共计 10932 个字符,预计需要花费 28 分钟才能阅读完成。

本篇文章是对 memcache 启动以及 telnet 命令进行了详细的分析介绍,需要的朋友参考下

1、启动 Memcache 常用参数

-p <num> 监听的 TCP 端口(默认: 11211)
-U <num> UDP 监听端口 (默认: 11211, 0 时关闭)
-d 以守护进程方式运行
-u <username> 运行运行 Memcached 的账户 非 root 用户
-m <num> 最大的内存使用单位是 MB 默认是 64MB
-c <num> 软连接数量默认是 1024
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印 memcached 和 libevent 的版权信息
-l <ip_addr> 绑定地址 (默认: 所有都允许, 无论内外网或者本机更换 IP,有安全隐患,若设置为 127.0.0.1 就只能本机访问)
-P <file> 将 PID 写入文件 <file>,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

启动示例:

/usr/local/bin/memcached -l 127.0.0.1 -d -p 11211 -u nobody -m 1024

说明:

-l 127.0.0.1     只允许本机访问

-d                 以后台守护进程运行

-p 11211      服务监听端口为 11211

-u nobody    用户名

-m 1024        申请最大内存空间为 1024MB

 

2、Memcache telnet 常用命令

memcache 命令格式

<command name> <key> <flags> <exptime> <bytes>  

<data block>            #  key 的 value 值,根据命令行语法规则此处需换行

参数说明如下

<command name>set/add/replace
<key>关键字
<flags>客户机使用它存储关于键值对的额外信息
<exptime>该数据的存活时间,0 表示永远
<bytes>存储字节数
<data block>存储的数据块(可直接理解为 key-value 结构中的 value)

 

命令用法及示例

COMMANDDESCRIPTIONEXAMPLE
getReads a valueget mykey
setSet a key unconditionallyset mykey 0 60 5
addAdd a new keyadd newkey 0 60 5
replaceOverwrite existing keyreplace key 0 60 5
appendAppend data to existing keyappend key 0 60 15
prependPrepend data to existing keyprepend key 0 60 15
incrIncrements numerical key value by given numberincr mykey 2
decrDecrements numerical key value by given numberdecr mykey 5
deleteDeletes an existing keydelete mykey
flush_allInvalidate specific items immediatelyflush_all
Invalidate all items in n secondsflush_all 900
statsPrints general statisticsstats
Prints memory statisticsstats slabs
Prints memory statisticsstats malloc
Print higher level allocation statisticsstats items
 stats detail
 stats sizes
Resets statisticsstats reset
versionPrints server version.version
verbosityIncreases log levelverbosity
quitTerminate telnet sessionquit

 

3、stats 命令详解

pidmemcache 服务器的进程 ID
uptime服务器已经运行的秒数
time服务器当前的 unix 时间戳
versionmemcache 版本
pointer_size当前操作系统的指针大小(32 位系统一般是 32bit)
rusage_user进程的累计用户时间
rusage_system进程的累计系统时间
curr_items服务器当前存储的 items 数量
total_items从服务器启动以后存储的 items 总数量
bytes当前服务器存储 items 占用的字节数
curr_connections当前打开着的连接数
total_connections从服务器启动以后曾经打开过的连接数
connection_structures服务器分配的连接构造数
cmd_getget 命令(获取)总请求次数
cmd_setset 命令(保存)总请求次数
get_hits总命中次数
get_misses总未命中次数
evictions为获取空闲内存而删除的 items 数(分配给 memcache 的空间用满后需要删除旧的 items 来得到空间分配给新的 items)
bytes_read总读取字节数(请求字节数)
bytes_written总发送字节数(结果字节数)
limit_maxbytes分配给 memcache 的内存大小(字节)
threads当前线程数

 

4、Memcache 启动 tips

a监听内网地址

b:修改默认端口号

c设置最大连接数,最大内存占用数

 

———————–

Memcached 常用命令以及使用说明详解

存储命令的格式

<command name> <key> <flags> <exptime> <bytes>  

<data block>            #  key 的 value 值,根据命令行语法规则此处需换行

参数说明如下

<command name>set/add/replace
<key>关键字
<flags>客户机使用它存储关于键值对的额外信息
<exptime>该数据的存活时间,0 表示永远
<bytes>存储字节数
<data block>存储的数据块(可直接理解为 key-value 结构中的 value)

 

1、添加 

(1)、无论如何都存储的 set

memcache 启动以及 telnet 命令详解

这个 set 的命令在 memcached 中的使用频率极高。

set 命令不但可以简单添加,如果 set 的 key 已经存在,该命令可以更新该 key 所对应的原来的数据,也就是实现更新的作用。

 

可以通过“get 键名”的方式查看添加进去的记录:

memcache 启动以及 telnet 命令详解

 

如你所知,我们也可以通过 delete 命令删除掉,然后重新添加。

memcache 启动以及 telnet 命令详解

 

(2)、只有数据不存在时进行添加的 add

memcache 启动以及 telnet 命令详解

 

(3)、只有数据存在时进行替换的 replace

memcache 启动以及 telnet 命令详解

 

2、删除

memcache 启动以及 telnet 命令详解

可以看到,删除已存在的键值和不存在的记录可以返回不同的结果。

 

二、读取命令

1、get 
get 命令的 key 可以表示一个或者多个键,键之间以空格隔开

memcache 启动以及 telnet 命令详解

 

2、gets

 memcache 启动以及 telnet 命令详解

可以看到,gets 命令比普通的 get 命令多返回了一个数字(上图中为 13)。

这个数字可以检查数据是否发生改变。当 key 对应的数据改变时,这个多返回的数字也会改变。

 

3、cas 
cas 即 checked and set 的意思,只有当最后一个参数和 gets 所获取的参数匹配时才能存储,否则返回“EXISTS”。

memcache 启动以及 telnet 命令详解

 

三、状态命令

1、stats 

memcache 启动以及 telnet 命令详解

2、stats items 

memcache 启动以及 telnet 命令详解
执行 stats items,可以看到 STAT items 行,如果 memcached 存储内容很多,那么这里也会列出很多的 STAT items 行。

 

3、stats cachedump slab_id limit_num 
我们执行 stats cachedump 1 0 命令效果如下:

memcache 启动以及 telnet 命令详解

这里 slab_id 为 1,是由 2 中的 stats items 返回的结果(STAT items 后面的��字)决定的;

limit_num 看起来好像是返回多少条记录,猜的一点不错,不过 0 表示显示出所有记录,而 n(n>0)就表示显示 n 条记录,如果 n 超过该 slab 下的所有记录,则结果和 0 返回的结果一致。

memcache 启动以及 telnet 命令详解

通过 stats items、stats cachedump slab_id limit_num 配合 get 命令可以遍历 memcached 的记录

 

4、其他 stats 命令 
如 stats slabs, stats sizes, stats reset 等等使用也比较常见。

memcache 启动以及 telnet 命令详解

 

四、其他常见命令

1、append

 memcache 启动以及 telnet 命令详解

在现有的缓存数据 添加缓存数据,如现有缓存的 key 不存在服务器响应为 NOT_STORED。

 

2、prepend 
和 append 非常类似,但它的作用是在现有的缓存数据 添加缓存数据。

memcache 启动以及 telnet 命令详解

 

3、flush_all

 memcache 启动以及 telnet 命令详解

该命令有一个可选的数字参数。它总是执行成功,服务器会发送“OK\r\n”回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。

flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由 memcached 的懒惰检测和删除机制决定的)。

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。

 

4、其他命令 
memcached 还有很多命令,比如对于存储为数字型的可以通过 incr/decr 命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。

 

补充:

简单认识.net framework 中的几种缓存 

web 站点中缓存的重要性毋庸置疑。很多 asp.net 开发人员在开发 web 应用系统的时候优先考虑使用的缓存并不是第三方缓存解决方案(比如分布式缓存 memcached、Redis 等等),而应该是.net framework 已经提供的多种缓存解决方案。

下面结合自己的开发经验谈谈对.net framework 中缓存的认识。

1、System.Web.Caching.Cache
估计大部分做过 asp.net 开发的人都用过这个命名空间下的缓存,我们可以直接使用 HttpContext.Current.Cache 实例而不用实例化。

当然这个命名空间下的 Cache 类是允许您实例化的,需要定制自己的缓存系统的当然可以完全自己控制如何初始化这个类。我在园子里看到过有很多文章介绍 Cache 的 CRUD 辅助类库大多数都是针对 System.Web.Caching.Cache。

需要说明的是,我们还可以通过该命名空间下的 HttpRuntime.Cache 实现 web、控制台、winform 等不同表现形式下的缓存,而且完全无需自己实例化。HttpRuntime.Cache 是之前个人开发中使用比较多的一个类,现在比较偏爱.net framework4.0 中的增强型的缓存类 MemoryCache。

 

2、Output Cache
众所周知,输出缓存主要分页面输出缓存和页面部分缓存。说白了,就是缓存整个页面的 html 或者部分 html,本来没什么值得讨论的,但是最近看到 dudu 的这篇博客才恍然发现,想不到使用它还真是大有讲究,我以前怎么就没有发现这个问题呢?看来发现问题和解决问题的能力同样重要,有时候前者甚至更重要啊。

 

3、System.Runtime.Caching
现在个人开发中使用最多的类 MemoryCache 出自这个命名空间,使用前需要引用 using System.Runtime.Caching。MemoryCache 继承自 ObjectCache, IEnumerable, IDisposable,其中 ObjectCache 是个抽象类。用过 MemoryCache 的人都知道,这个 MemoryCache 有一个属性叫 Default,通常可以像下面这样使用:

private static ObjectCache memCache = MemoryCache.Default; 当然我们也完全可以通过 public MemoryCache(string name, NameValueCollection config = null)构造函数初始化缓存对象。

接着我们可以在 web.config 文件中配置每个 MemoryCache 实例运行的内存使用配额方案和配额检查周期,下面示例参考MSDN

<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name=”Default” cacheMemoryLimitMegabytes=”10″ pollingInterval=”00:02:00″/>
</namedCaches>
</memoryCache>
</system.runtime.caching>

这些配置意义在于可以明确指定每个 MemoryCache 实例运行的内存使用配额方案和配额检查周期。比如我们可以通过配置来按需更改 MemoryCache.Default 实例的内存配额(不知道缓存可用最大内存是多少,可能还是传说中的 800M 左右)。缓存过期策略与其它的缓存框架大同小异,与 System.Web.Caching.Cache 的不同只是名称不叫 CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目录的缓存依赖策略。关于缓存过期策略也比较有探讨的必要,不过个人开发中比较偏重于数据缓存和替换,目前还没有接触和使用过比较完美的过期策略解决方案。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148429.htm

本篇文章是对 memcache 启动以及 telnet 命令进行了详细的分析介绍,需要的朋友参考下

1、启动 Memcache 常用参数

-p <num> 监听的 TCP 端口(默认: 11211)
-U <num> UDP 监听端口 (默认: 11211, 0 时关闭)
-d 以守护进程方式运行
-u <username> 运行运行 Memcached 的账户 非 root 用户
-m <num> 最大的内存使用单位是 MB 默认是 64MB
-c <num> 软连接数量默认是 1024
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印 memcached 和 libevent 的版权信息
-l <ip_addr> 绑定地址 (默认: 所有都允许, 无论内外网或者本机更换 IP,有安全隐患,若设置为 127.0.0.1 就只能本机访问)
-P <file> 将 PID 写入文件 <file>,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

启动示例:

/usr/local/bin/memcached -l 127.0.0.1 -d -p 11211 -u nobody -m 1024

说明:

-l 127.0.0.1     只允许本机访问

-d                 以后台守护进程运行

-p 11211      服务监听端口为 11211

-u nobody    用户名

-m 1024        申请最大内存空间为 1024MB

 

2、Memcache telnet 常用命令

memcache 命令格式

<command name> <key> <flags> <exptime> <bytes>  

<data block>            #  key 的 value 值,根据命令行语法规则此处需换行

参数说明如下

<command name>set/add/replace
<key>关键字
<flags>客户机使用它存储关于键值对的额外信息
<exptime>该数据的存活时间,0 表示永远
<bytes>存储字节数
<data block>存储的数据块(可直接理解为 key-value 结构中的 value)

 

命令用法及示例

COMMANDDESCRIPTIONEXAMPLE
getReads a valueget mykey
setSet a key unconditionallyset mykey 0 60 5
addAdd a new keyadd newkey 0 60 5
replaceOverwrite existing keyreplace key 0 60 5
appendAppend data to existing keyappend key 0 60 15
prependPrepend data to existing keyprepend key 0 60 15
incrIncrements numerical key value by given numberincr mykey 2
decrDecrements numerical key value by given numberdecr mykey 5
deleteDeletes an existing keydelete mykey
flush_allInvalidate specific items immediatelyflush_all
Invalidate all items in n secondsflush_all 900
statsPrints general statisticsstats
Prints memory statisticsstats slabs
Prints memory statisticsstats malloc
Print higher level allocation statisticsstats items
 stats detail
 stats sizes
Resets statisticsstats reset
versionPrints server version.version
verbosityIncreases log levelverbosity
quitTerminate telnet sessionquit

 

3、stats 命令详解

pidmemcache 服务器的进程 ID
uptime服务器已经运行的秒数
time服务器当前的 unix 时间戳
versionmemcache 版本
pointer_size当前操作系统的指针大小(32 位系统一般是 32bit)
rusage_user进程的累计用户时间
rusage_system进程的累计系统时间
curr_items服务器当前存储的 items 数量
total_items从服务器启动以后存储的 items 总数量
bytes当前服务器存储 items 占用的字节数
curr_connections当前打开着的连接数
total_connections从服务器启动以后曾经打开过的连接数
connection_structures服务器分配的连接构造数
cmd_getget 命令(获取)总请求次数
cmd_setset 命令(保存)总请求次数
get_hits总命中次数
get_misses总未命中次数
evictions为获取空闲内存而删除的 items 数(分配给 memcache 的空间用满后需要删除旧的 items 来得到空间分配给新的 items)
bytes_read总读取字节数(请求字节数)
bytes_written总发送字节数(结果字节数)
limit_maxbytes分配给 memcache 的内存大小(字节)
threads当前线程数

 

4、Memcache 启动 tips

a监听内网地址

b:修改默认端口号

c设置最大连接数,最大内存占用数

 

———————–

Memcached 常用命令以及使用说明详解

存储命令的格式

<command name> <key> <flags> <exptime> <bytes>  

<data block>            #  key 的 value 值,根据命令行语法规则此处需换行

参数说明如下

<command name>set/add/replace
<key>关键字
<flags>客户机使用它存储关于键值对的额外信息
<exptime>该数据的存活时间,0 表示永远
<bytes>存储字节数
<data block>存储的数据块(可直接理解为 key-value 结构中的 value)

 

1、添加 

(1)、无论如何都存储的 set

memcache 启动以及 telnet 命令详解

这个 set 的命令在 memcached 中的使用频率极高。

set 命令不但可以简单添加,如果 set 的 key 已经存在,该命令可以更新该 key 所对应的原来的数据,也就是实现更新的作用。

 

可以通过“get 键名”的方式查看添加进去的记录:

memcache 启动以及 telnet 命令详解

 

如你所知,我们也可以通过 delete 命令删除掉,然后重新添加。

memcache 启动以及 telnet 命令详解

 

(2)、只有数据不存在时进行添加的 add

memcache 启动以及 telnet 命令详解

 

(3)、只有数据存在时进行替换的 replace

memcache 启动以及 telnet 命令详解

 

2、删除

memcache 启动以及 telnet 命令详解

可以看到,删除已存在的键值和不存在的记录可以返回不同的结果。

 

二、读取命令

1、get 
get 命令的 key 可以表示一个或者多个键,键之间以空格隔开

memcache 启动以及 telnet 命令详解

 

2、gets

 memcache 启动以及 telnet 命令详解

可以看到,gets 命令比普通的 get 命令多返回了一个数字(上图中为 13)。

这个数字可以检查数据是否发生改变。当 key 对应的数据改变时,这个多返回的数字也会改变。

 

3、cas 
cas 即 checked and set 的意思,只有当最后一个参数和 gets 所获取的参数匹配时才能存储,否则返回“EXISTS”。

memcache 启动以及 telnet 命令详解

 

三、状态命令

1、stats 

memcache 启动以及 telnet 命令详解

2、stats items 

memcache 启动以及 telnet 命令详解
执行 stats items,可以看到 STAT items 行,如果 memcached 存储内容很多,那么这里也会列出很多的 STAT items 行。

 

3、stats cachedump slab_id limit_num 
我们执行 stats cachedump 1 0 命令效果如下:

memcache 启动以及 telnet 命令详解

这里 slab_id 为 1,是由 2 中的 stats items 返回的结果(STAT items 后面的��字)决定的;

limit_num 看起来好像是返回多少条记录,猜的一点不错,不过 0 表示显示出所有记录,而 n(n>0)就表示显示 n 条记录,如果 n 超过该 slab 下的所有记录,则结果和 0 返回的结果一致。

memcache 启动以及 telnet 命令详解

通过 stats items、stats cachedump slab_id limit_num 配合 get 命令可以遍历 memcached 的记录

 

4、其他 stats 命令 
如 stats slabs, stats sizes, stats reset 等等使用也比较常见。

memcache 启动以及 telnet 命令详解

 

四、其他常见命令

1、append

 memcache 启动以及 telnet 命令详解

在现有的缓存数据 添加缓存数据,如现有缓存的 key 不存在服务器响应为 NOT_STORED。

 

2、prepend 
和 append 非常类似,但它的作用是在现有的缓存数据 添加缓存数据。

memcache 启动以及 telnet 命令详解

 

3、flush_all

 memcache 启动以及 telnet 命令详解

该命令有一个可选的数字参数。它总是执行成功,服务器会发送“OK\r\n”回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。

flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由 memcached 的懒惰检测和删除机制决定的)。

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。

 

4、其他命令 
memcached 还有很多命令,比如对于存储为数字型的可以通过 incr/decr 命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。

 

补充:

简单认识.net framework 中的几种缓存 

web 站点中缓存的重要性毋庸置疑。很多 asp.net 开发人员在开发 web 应用系统的时候优先考虑使用的缓存并不是第三方缓存解决方案(比如分布式缓存 memcached、Redis 等等),而应该是.net framework 已经提供的多种缓存解决方案。

下面结合自己的开发经验谈谈对.net framework 中缓存的认识。

1、System.Web.Caching.Cache
估计大部分做过 asp.net 开发的人都用过这个命名空间下的缓存,我们可以直接使用 HttpContext.Current.Cache 实例而不用实例化。

当然这个命名空间下的 Cache 类是允许您实例化的,需要定制自己的缓存系统的当然可以完全自己控制如何初始化这个类。我在园子里看到过有很多文章介绍 Cache 的 CRUD 辅助类库大多数都是针对 System.Web.Caching.Cache。

需要说明的是,我们还可以通过该命名空间下的 HttpRuntime.Cache 实现 web、控制台、winform 等不同表现形式下的缓存,而且完全无需自己实例化。HttpRuntime.Cache 是之前个人开发中使用比较多的一个类,现在比较偏爱.net framework4.0 中的增强型的缓存类 MemoryCache。

 

2、Output Cache
众所周知,输出缓存主要分页面输出缓存和页面部分缓存。说白了,就是缓存整个页面的 html 或者部分 html,本来没什么值得讨论的,但是最近看到 dudu 的这篇博客才恍然发现,想不到使用它还真是大有讲究,我以前怎么就没有发现这个问题呢?看来发现问题和解决问题的能力同样重要,有时候前者甚至更重要啊。

 

3、System.Runtime.Caching
现在个人开发中使用最多的类 MemoryCache 出自这个命名空间,使用前需要引用 using System.Runtime.Caching。MemoryCache 继承自 ObjectCache, IEnumerable, IDisposable,其中 ObjectCache 是个抽象类。用过 MemoryCache 的人都知道,这个 MemoryCache 有一个属性叫 Default,通常可以像下面这样使用:

private static ObjectCache memCache = MemoryCache.Default; 当然我们也完全可以通过 public MemoryCache(string name, NameValueCollection config = null)构造函数初始化缓存对象。

接着我们可以在 web.config 文件中配置每个 MemoryCache 实例运行的内存使用配额方案和配额检查周期,下面示例参考MSDN

<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name=”Default” cacheMemoryLimitMegabytes=”10″ pollingInterval=”00:02:00″/>
</namedCaches>
</memoryCache>
</system.runtime.caching>

这些配置意义在于可以明确指定每个 MemoryCache 实例运行的内存使用配额方案和配额检查周期。比如我们可以通过配置来按需更改 MemoryCache.Default 实例的内存配额(不知道缓存可用最大内存是多少,可能还是传说中的 800M 左右)。缓存过期策略与其它的缓存框架大同小异,与 System.Web.Caching.Cache 的不同只是名称不叫 CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目录的缓存依赖策略。关于缓存过期策略也比较有探讨的必要,不过个人开发中比较偏重于数据缓存和替换,目前还没有接触和使用过比较完美的过期策略解决方案。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148429.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10932字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中