设为首页 收藏本站
查看: 905|回复: 0

[经验分享] memcache 之windows下的使用

[复制链接]
YunVN网友  发表于 2018-6-21 08:41:56 |阅读模式
  memcached 是一个高效的分布式的内存对象缓存系统 ,他可以支持把各种数据(数组,对象,基本数据类型,资源除外)放入到它管理的内存中。它采用c/s结构,使用简单文本通讯并基于libevent处理并发,将数据存入内存的缓存工具,它是基于基于客户端的分布式,服务器端本身并不是分布式的。
  Memcache(Memcached)是集群环境下的缓存解决方案。  它是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。
  win32系统下的安装步骤:
  ①下载memcached软件
  ②解压 其中有一个memcached.exe文件
  ③安装memcached –d install [卸载使用 memcached -d uninstall]
  ④启动 memcached 服务
  (1)直接通过界面启动该服务
  (2)在控制台下启动 memcached –d start   [命令一览表]
  ⑤查看memcached 服务是否启动成功! 默认端口11211 通过netstat -anb命令可以查看
  memcached的基本命令(安装、卸载、启动、配置相关):
  -p 监听的端口
  -l 连接的IP地址, 默认是本机
  -d start 启动memcached服务
  -d restart 重起memcached服务
  -d stop|shutdown 关闭正在运行的memcached服务
  -d install 安装memcached服务
  -d uninstall 卸载memcached服务
  -u 以的身份运行 (仅在以root运行的时候有效)
  -m 最大内存使用,单位MB。默认64MB
  -M 内存耗尽时返回错误,而不是删除项
  -c 最大同时连接数,默认是1024
  -f 块大小增长因子,默认是1.25
  -n 最小分配空间,key+value+flags默认是48
  -h 显示帮助
  2、 如果在安装时没有添加参数,可通过修改注册表信息进行设置,打开注册表,找
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached
  在其中有一个“ImagePath”项,值为:
  "C:\Memcached\memcached-win32-1.4.4-14\memcached.exe" -d runservice
  在后面加上“-m 1024 -c2048”。
  命令行分别输入 memcached -d stop 和 net start "Memcached Server" 命令可以卸载已安装的memcached
  注意:win7下的通过控制台安装必须 启用管理员权限启动命令行窗口才可以运行命令。
  使用方法一:
  telnet的使用(win7下默认情况telnet没有开启,需要在控制面板-->程序和功能,中通过打开或关闭功能,开题telnet即可开启telnet)
  telnet://ip 11211即可对memcache进行远程操作。
  使用方法二:
  通过java客户端api的方式。
  采用了spymemcached  下载地址:http://spymemcached.googlecode.com/  它依赖 spy.jar,spy.jar的下载地址:http://bleu.west.spy.net/~dustin/repo/spy/jars/spy-2.4.jar
  Java代码 name=client.asyncGet("name"); //这里是异步操作,如果出现了 服务器端超时,则可以抛出异常,否则会阻塞 try { System.out.println(name.get(5, TimeUnit.SECONDS)); } catch (InterruptedException e) { System.out.println(e.getMessage()); } catch (TimeoutException e) { System.out.println(e.getMessage()); } catch (ExecutionException e) { System.out.println(e.getMessage()); } client.shutdown(); } } " quality="high" >

  •   public class MemcacheTest {
  •   public static void main(String[] args) {
  •   MemcachedClient client=null;
  •   try {
  •   client = new MemcachedClient(new InetSocketAddress("localhost",11211));
  •   } catch (IOException e) {
  •   System.out.println(e.getMessage());
  •   }
  •   client.add("name", 60, "小明");
  •   GetFuture name=client.asyncGet("name");
  •   //这里是异步操作,如果出现了 服务器端超时,则可以抛出异常,否则会阻塞
  •   try {
  •   System.out.println(name.get(5, TimeUnit.SECONDS));
  •   } catch (InterruptedException e) {
  •   System.out.println(e.getMessage());
  •   } catch (TimeoutException e) {
  •   System.out.println(e.getMessage());
  •   } catch (ExecutionException e) {
  •   System.out.println(e.getMessage());
  •   }
  •   client.shutdown();
  •   }
  •   }
  memcached的基本命令(memcached 启动后用于对memcached管理的数据和本身运行状态相关的命令)
  Command
  Description
  Example
  get
  Reads a value
  get mykey
  set
  Set a key unconditionally
  set mykey 0 60 5
  add
  Add a new key
  add newkey 0 60 5
  replace
  Overwrite existing key
  replace key 0 60 5
  append
  Append data to existing key
  append key 0 60 15
  prepend
  Prepend data to existing key
  prepend key 0 60 15
  incr
  Increments numerical key value by given number
  incr mykey 2
  decr
  Decrements numerical key value by given number
  decr mykey 5
  delete
  Deletes an existing key
  delete mykey
  flush_all
  Invalidate specific items immediately
  flush_all
  Invalidate all items in n seconds
  flush_all 900
  stats
  Prints general statistics
  stats
  Prints memory statistics
  stats slabs
  Prints memory statistics
  stats malloc
  Print higher level allocation statistics
  stats items
  stats detail

  stats>  Resets statistics
  stats reset
  version
  Prints server version.
  version
  verbosity
  Increases log level
  verbosity
  quit
  Terminate telnet session
  quit
  ========关于日志部份,应该跟linux一样,下面是linux环境下的,win也是这样================
  memcache在linux上安装时并不支持显示地配置服务日志,我们如果想要把memcache服务日志保存到日志文件中,则需要在启动参数中进行配置。
  安装好memcache后,我们可以通过-h命令查看memcached支持的参数:
  Shell代码

  •   [chenzhou@localhost ~]$ /usr/local/memcached/bin/memcached -h
  •   #其余的省略
  •   -v            verbose (print errors/warnings while in event loop)
  •   -vv           very verbose (also print client commands/reponses)
  •   -vvv          extremely verbose (also print internal state transitions)
  从上面可以看到,启动memcached时有3个参数是和日志信息相关的:
  其中-v代表打印普通的错误或者警告类型的日志信息
  -vv比-v打印的日志更详细,包含了客户端命令和server端的响应信息
  -vvv则是最详尽的,甚至包含了内部的状态信息打印
  你可以根据你的实际需要来选择对应的参数,我这里使用-vv就OK了。
  由于我们需要把日志信息保存在文件中,而不是在控制台输出,而-vv等参数只能把日志信息输出在控制台。所以我们需要对-vv参数的输出进行数据流重定向,关于重定向的知识在这里就不细述了,有兴趣的可以查下资料了解一下。
  综上,启动memcached的命令如下:
  Shell代码

  •   /usr/local/memcached/bin/memcached -d -m 2048 -p $1 -u root -vv >> /tmp/memcached.log 2>&1
  重点在最后的:-vv >> /tmp/memcached.log 2>&1
  -vv >> /tmp/memcached.log:代表把-vv的输出重定向到/tmp/memcached.log 文件中
  2>&1的意思是把错误日志也一起写入到该文件中
  启动成功后我们可以测试一下,首先起两个terminal,terminal1用来查看日志信息,terminal2进行client操作
  terminal1:启动memcached后默认的日志信息如下
  Shell代码

  •   [chenzhou@localhost ~]$ tail -f /tmp/memcached.log

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>

  •   <<SPAN>
  terminal2:往memcached里存入一个数据
  Shell代码

  •   [root@localhost bin]# telnet localhost 11211
  •   Trying 127.0.0.1...
  •   Connected to localhost.localdomain (127.0.0.1).
  •   Escape character is '^]'.
  •   set name 0 60 5 chenzhou
  如上所示:使用set命令存入key为name value为chenzhou
  terminal1日志记录:
  Shell代码

  •   32: Client using the ascii protocol

  •   <<SPAN>
  这样,我们的配置就生效了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-528529-1-1.html 上篇帖子: Windows8和“安全启动” (5) 下篇帖子: 《windows server 2008》Web服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表