Memcache的总结介绍和一些命令的总结

1.1memcached是什么?

来看一些官方的一些解释:

1 free&opensource,high-performance,distributed  memory object caching system

自由&开放源码, 高性能,分布式的内存对象缓存系统
由livejounal旗下的danga公司开发的老牌nosql应用

2.1linux下编译memcached

1 准备编译环境:
2 在linux编译,需要gcc,make,cmake,autoconf,libtool等工具,
3 这几件工具, 以后还要编译redis等使用,所以请先装.
4 在linux系统联网后,用如下命令安装
5 #yum install gcc make cmake autoconf libtool

编译memcached
memcached依赖于libevent库,因此我们需要先安装libevent.

分别到libevent.org 和memcached.org下载最新的stable版本(稳定版).

先编译libevent,再编译memcached,

编译memcached时要指定libevent的路径.

过程如下: 假设源码在/usr/local/src下, 安装在/usr/local下

 1 #tar zxvf  libevent-2.0.21-stable.tar.gz
 2 #cd  libevent-2.0.21-stable
 3 #./configure--prefix=/usr/local/libevent
 4 #如果出错,读报错信息,查看原因,一般是缺少库
 5 # make && make  install
 6 # tar zxvf  memcached-1.4.5.tag.gz
 7 # cd  memcached-1.4.5
 8 # ./configure  --prefix=/usr/local/memcached  9 --with-libevent=/usr/local/libevent
10 # make && make install

memcached的启动:(我们可以通过 --help 来选择启动时的一些参数)

 1 #/usr/local/memcached/bin/memcached -m64 -p11211 -unobody  -vv
 2 slab class 1:chunksize 96 perslab 10922
 3 slab class 2:chunksize 120 perslab 8738
 4 slab class 3:chunksize 152 perslab 6898
 5 slab class 4:chunksize 192 perslab 5461
 6 ....
 7 ....
 8 slab class 9:chunksize 600 perslab 1747
 9 slab class 10:chunksize 752 perslab 1394
10 slab class 39:chunksize 493552 perslab 2
11 slab class 40:chunksize 616944 perslab 1
12 slab class 41:chunksize 771184 perslab 1
13 slab class 42:chunksize 1048576 perslab 1

如果想了解-m-p等参数的意义, 可以通过memcached-h 查看帮助:

 1 -p <num> tcp port number to listenon (default:11211)//监听
 2 的端口
 3 -u <num> udp port number to listenon(default:0,off)
 4 -s <file> unixsocket path to listenon(disables network support)
 5 -a <mask> access mask for unixsocket,inoctal(default0700)
 6 -l <ip_addr> interface to listenon,default is in drr_any
 7 -d start tellmemcachedtostart
 8 -d restart tellrunningmemcachedtodoagracefulrestart
 9 -d stop|shutdown tellrunningmemcachedtoshutdown
10 -d install installmemcachedservice//把memcached注册成服务
11 -d uninstall uninstall memcached service
12 -r maximize core file limit
13 -u <username>assume identity of <username>(only when run as root)
14 -m <num> max memory to use for items inmegabytes,defaultis64
15 mb//分配给memcached的最大内存
16 -m return error on memory exhausted (rather than removing
17 items)

memcached的连接:

1 memcached客户端与服务器端的通信比较简单,使用的基于文本的协议,而不是二进制协议.
2 (http协议也是这样), 因此我们通过telnet即可与memcached作交互.

另开一个终端,并运行telnet 命令(开启memcached的终端不要关闭):

1 #格式telnet host port
2 #telnet localhost 11211
3 Trying::1...
4 Connected to localhost.
5 Escape character is‘^]‘.

memcached的命令:

1 增: add 往内存增加一行新记录
2
3 语法:add key flag expire length
4
5 key  给值起一个独特的名字
6 flag  标志,要求为一个正整数
7 expire 有效期

  length 缓存的长度(字节为单位)
1 flag的意义:
2 memcached基本文本协议,传输的东西,理解成字符串来存储.
3 想:让你存一个php对象,和一个php数组,怎么办?
4 答:序列化成字符串,往出取的时候,自然还要反序列化成对象/数组/json格式等等.
5 这时候,flag的意义就体现出来了.
6 比如,1就是字符串,2反转成数组3,反序列化对象.....
1 expire的意义:
2 设置缓存的有效期,有3种格式
3 1:设置秒数, 从设定开始数,第n秒后失效.
4 2:时间戳, 到指定的时间戳后失效.
5 比如在团购网站,缓存的某团到中午12:00失效.add key 0 13792099996
6 3:设为0.不自动失效.

注: 有种误会,设为0,永久有效.错误的.

1 1:编译memcached时,指定一个最长常量,默认是30天.
2 所以,即使设为0,30天后也会失效.
3 2:可能等不到30天,就会被新数据挤出去.
delete 删除
delete key [time seconds]
删除指定的key.如加可选参数time,则指删除key,并在删除key后的time秒内,不允许
get,add,replace操作此key.
1 ? replace 替换
2 replace key flag expire length
3 参数和add完全一样,不单独写
1 ? get查询
2 get key
3 返回key的值
1 ? set 是设置和修改值
2 参数和add,replace一样,但功能不一样.
3
4 用add时,key不存在,才能建立此键值.
1 set 想当于有add replace两者的功能.
2 set key flag expire leng 时
3 如果服务器无此键----> 增加的效果
4 如果服务器有此键----> 修改的效果.
5 如下图的演示,该图中,name是已经存在,而date原本不存在.set都可以成功设置他们

? incr,decr 命令:增加/减少值的大小
语法: incr/decr key num
示例:

set age 0 0 2
28
stored
get age
value age 0 2
28
end
incr age 1
29
incr age 2
31
decr age 1
30
decr age 2
28
1 应用场景------秒杀功能,
2 一个人下单,要牵涉数据库读取,写入订单,更改库存,及事务要求, 对于传统型数据库来说,
3 压力是巨大的.
4 可以利用memcached的incr/decr功能, 在内存存储count库存量, 秒杀1000台
5 每人抢单主要在内存操作,速度非常快,
6 抢到count<=1000的号人,得一个订单号,再去另一个页面慢慢支付

统计命令:stats:

 1 STAT pid 22443 // 进程号
 2 STAT uptime 17543398 //持续运行的时间
 3 STAT time 1438505866
 4 STAT version 1.4.22
 5 STAT libevent 2.0.20-stable
 6 STAT pointer_size 64
 7 STAT rusage_user 63.916283
 8 STAT rusage_system 36.312479
 9 STAT curr_connections 5
10 STAT total_connections 36
11 STAT connection_structures 7
12 STAT reserved_fds 20
13 STAT cmd_get 15
14 STAT cmd_set 6
15 STAT cmd_flush 1
16 STAT cmd_touch 0
17 STAT get_hits 9
18 STAT get_misses 6
19 STAT delete_misses 0
20 STAT delete_hits 1
21 STAT incr_misses 0
22 STAT incr_hits 0
23 STAT decr_misses 0
24 STAT decr_hits 0
25 STAT cas_misses 0
26 STAT cas_hits 0
27 STAT cas_badval 0
28 STAT touch_hits 0
29 STAT touch_misses 0
30 STAT auth_cmds 0
31 STAT auth_errors 0
32 STAT bytes_read 5815
33 STAT bytes_written 2108
34 STAT limit_maxbytes 67108864
35 STAT accepting_conns 1
36 STAT listen_disabled_num 0
37 STAT threads 4
38 STAT conn_yields 0
39 STAT hash_power_level 16
40 STAT hash_bytes 524288
41 STAT hash_is_expanding 0
42 STAT malloc_fails 0
43 STAT bytes 74
44 STAT curr_items 1
45 STAT total_items 5
46 STAT expired_unfetched 0
47 STAT evicted_unfetched 0
48 STAT evictions 0
49 STAT reclaimed 1
50 STAT crawler_reclaimed 0
51 STAT lrutail_reflocked 0
52
53 缓存有一个重要的概念: 命中率.
54 命中率是指:(查询到数据的次数/查询总数)*100%
55 如上,13/(13+7)=60+%, 的命中率.
时间: 2024-10-05 04:27:41

Memcache的总结介绍和一些命令的总结的相关文章

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 # Linux shell 基础 # 8.1 shell 介绍 - 什么是shell 1. shell 是一个命令解释器,提供用户和机器之间的交互 2. 支持特定语法,比如逻辑判断.循环 3. 每个用户都可以有自己特定的shell 4. CentOS7 默认shell 为bash (Bourne Agin Shell) 5. 还有zsh.ksh等 ``` [[email protected]

转:Redis介绍及常用命令大全

一 Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持. Redis能运行在大多数POSIX(Linux, *BSD, OS X 和Solaris等)系统上,官方没有支持Windows的版本.目前最新的版本是2.2.11,这个版本主要是修复了一个2.2.7版本中遍历方式优化带来的一个bug. 和普通的Key-Value结构不同,R

Linux的简单介绍和常用命令的介绍

Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html 自行安装 Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安装步骤,找百度. 再安装Ubuntu.具体安装步骤,找百度 常用指令 ls      

Redis介绍及常用命令

Redis介绍及常用命令 Redis是一个key-value存储系统.和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表).sets(集合).zsets(有序集合).Hashes(哈希表)几种数据类型.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的. 博客分类: NoSql---Redis nosqlredis 一 Redis介绍 Red

五周第三次课(1月10日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

五周第三次课(1月10日)8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 history命令: 用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2. 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命

五周第三次课 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.

8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 shell是一个命令解释器,提供用户和机器之间的交互支持特定语法,比如逻辑判断.循环(if for whell)每个用户都可以有自己特定的shellCentOS7默认shell为bash(Bourne Agin Shell)还有zsh.ksh等 yum list |grep zsh 搜索yum 中是否有zsh # yum list |grep ksh 8.2 命令历史 she

Memcache与Memcached介绍及安装配置

Memcache学习总结1-Memcache与Memcached介绍及安装配置 也许大家一看到Memcache和Memcached会有点晕,这两者有什么关系又有什么区别呢,下面先给大家说下Memcached,Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. 想必大家也听说过Memcached,就是一个缓存系统,我们可以把一些经常要查询的数据放到缓存中,避免每次要使用

2----svn介绍和常用命令

一,subverison介绍svn版本管理工具管理着随时间改变的各种数据库,数据放置在repository中:svn会备份并记录每个文件每一次的修改 更新变动. svn工作流程:1,在中央库上创建或从主干复制一个分支2,从中央库check out 下这个分支的代码3,增加自己的代码文件,修改现存的代码或删除代码文件4,commit代码,假设有人在刚刚的分支上提交了代码,你就会被提示代码过期   先up你的代码后再提交,up代码时候出现 冲突,需要解决好冲突后再提交 svn官网,文档,下载地址ht

Linux用户和组介绍及相关命令的使用

用户和组介绍 用户类别: 管理员 普通用户 系统用户 登录用户 用户标识:UserID, UID 16bits二进制数字:0-65535 管理员:0 普通用户:1-65635 系统用户:1-499(CentOS6), 1-999(CentOS7) 登录用户:500-60000(CentOS6), 1000-60000(CentOS7) 名称解析:名称转换 Username <--> UID 根据名称解析库进行:/etc/passwd 组: 组类别1: 管理员组 普通用户组 系统组 登录组 组标