zoukankan      html  css  js  c++  java
  • memcache安装与简单介绍

      本文参考自菜鸟教程中的内容。

    安装

      安装memcache的时候,请切换为root用户

    root@centos # wget http://www.memcached.org/files/memcached-1.5.9.tar.gz
    root@centos # tar -zxf memcached-1.5.9.tar.gz
    root@centos # cd memcached-1.5.9
    root@centos # ./configure --prefix=/usr/local/memcache
    root@centos # make && make install
    root@centos # ln -s /usr/local/memcache/bin/memcached /usr/local/sbin/memcached
    

      

    启动

      启动memcache的时候,不能使用root身份,所以请切换为其他用户。

    beyond@centos $ memcached -p 11211 -m 64m -d
    beyond@centos $ lsof -i:11211
    COMMAND     PID     USER   	FD   TYPE   DEVICE SIZE/OFF NODE NAME
    memcached 	31461  	beyond  26u  IPv4 	10238464   0t0  TCP *:memcache (LISTEN)
    memcached 	31461  	beyond  27u  IPv6 	10238465   0t0  TCP *:memcache (LISTEN)
    

      -p 表示memcache监听的端口。

      -m 表示将本地的多少内存分配给memcache,单位为MB。

      -d 表示以守护进程方式运行(后台运行)

      -d可以替换为-vv,表示显示memcache的运行状态。

     

    命令

      有关参数的说明:flags 存储额外信息,在使用get和gets的时候可以看到;expire 过期时间的单位为秒; bytes_length 要设置的value的长度(字节数)。

      set:不管是否设置key对应的值,使用set命令之后,都会重新设置key对应的值。有则更新,无则创建。

    set key flags expire bytes_length [noreply] 
    value 
    

      

      add:如果之前没有设置过key对应的值(或者说已经过期了),那么此时就设置key对应的值;如果之前设置了key对应的值(并且没有过期),那就什么也不做,不会进行更新操作。

    add key flags expire bytes_length [noreply] 
    value 
    

      

      replace:如果设置了key对应的值,并且没有过期的话,那么就更新key对应的值;如果没有设置key对应的值,或者说之前设置了,但是过期了,那么此时并不会重新设置key对应的值,(什么也不做)。

    replace key flags expire bytes_length [noreply]
    value
    

      

      append:如果设置了key对应的值,并且没有过期的话,那么可以在key对应的值后面增加内容;如果没有key对应的值,或者过期了,那么就什么也不做。

    append key flags expire add_bytes_length [noreply]
    value
    

      

      prepend:和append的规则一样,区别是prepend是在value的前面追加。

    prepend key flags exptime bytes [noreply]
    value
    

      

      get:获取memcache中的key对应的信息(可以是一个key列表,使用空格分开)。

    get key1 key2 ...
    

      

      gets:获取memcache中key对应的详细信息,包括cas令牌。

    gets key1 key2 ...
    

      

      delete:删除一个key,使用delete一次只能删一个key。

    delete key
    

      

      incr :如果key存在,并且是32位的整型,那么就将value增加一个decrement,注意必须制定incr。

    incr key increment
    

      

      decr:如果key存在,并且是32位整型数字,那么就将value减少decrement,必须指定decrment。

    decr key decrement
    

      

      flush_all:清空memcache中所有的数据。如果没有指定after的话,就立即清除;如果制定了after,就在after秒之后清空数据。

    flush_all [after]
    

      

    拓展

      0、memcache中的数据保存在内存中,断电就会消失,并且存的单个数据项默认是不能大于1MB的,但是可以通过修改源码来实现改变大小。

      1、memcache中只能存字符串,也就是说,如果要存数组、对象的话,需要先序列化之后再存。

      3、memcache中的数据在过期的时候,并不会立即被清除,而是在下一次访问这个过期数据的时候,才清除这个过期数据。

      4、memcache是分布式缓存,但是每个节点之间不会进行相互通信,也就是说,节点之间不会进行同步数据操作,用户需要自己设计算法将数据分配到不同的memcache节点中。

      5、memcahce是一个多线程运行的,其中主线程主要监听连接请求,工作线程主要进行处理客户端请求。主线程如果监听到连接请求后,就接受请求,然后将连接分配给工作线程去处理;工作线程接到请求之后,进行处理请求,然后将结果返回给客户端。

      6、memcache使用LRU算法来进行数据的删除。

      7、memcache没有持久化的概念,即缓存中的数据不会保存到硬盘上,一旦断电,数据真的就丢了。redis有持久化。

      8、不支持事务回滚

  • 相关阅读:
    Oracle中的序列
    Oracle中常见表与各类结构的查询
    软件项目中的沟通 第一故事
    bat脚本 得到前一天的日期
    Windows bat脚本的for语句
    Integer与int比较
    String参数传递
    数据类型转换
    synchronized
    Java的Thread和Runnable
  • 原文地址:https://www.cnblogs.com/-beyond/p/7813751.html
Copyright © 2011-2022 走看看