码迷,mamicode.com
首页 > 系统相关 > 详细

memcached的安装启动(仅介绍安装和启动)

时间:2018-11-07 18:41:49      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:机制   日期   least   json   mem   启动   loaded   errors   协议   

什么是NoSQL

非关系型数据库就是NoSQL?,关系型数据库代表MySQL
对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行行地去匹配?,当量非常?大的时候就很耗费时间和资源,尤其是数据是需要从磁盘里去检索
NoSQL数据库存储原理非常简单(典型的数据类型为k-v?),不存在繁杂的关系链,比如mysq查询的时候,需要找到对应的库、表(通常是多个表)以及字段。
NoSQL数据是可以存储在内存里,从内存中查询数据速度会非常快
NoSQL在性能表现上虽然能优于关系型数据库,但是它并不能完全替代关系型数据库
NoSQL因为没有复杂的数据结构,扩展非常容易,支持分布式

k-v形式的:?memcached、t?redis适合储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。。
文档数据库:?mongodb??将数据以文档的形式储存。每个文档都是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,??如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。

列存储 ?Hbase
图Neo4J、?Infinite?Graph、OrientDB

memcached介绍

memcached对数据查询结果进行缓存,减少对关系型数据库访问,加速数据请求结果的反馈响应
数据存放在内存中,因为数据是存在内存当中的,如果一旦关机或断电等意外操作,会造成数据丢失,为了避免这种情况发生。需要对memcachd的数据做持久化存储,将数据存入磁盘
多线程服务处理请求,多cpu的服务器架构处理数据会很快
memcached基于c/s架构,协议简单。由一个客户端来链接服务端来存储数据
memcached基于libevent的事件处理(nginx也是基于libevent方式的)
libevent事件处理,自主内存存储处理(slab?allocation)

Slab Allocation原理
将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合),每个chunk集合被称为slab
Memcached的内存分配以Page为单位,Page默认值为1MB,可以在启动时通过-I参数来指定
Slab是由多个Page组成,Page按照指定大小切割成多个chunk

Griwth factor(增长因子)指定控制chunk的大小差异,在启动时使用-f来指定。默认值为1.25
数据过期方式
Lazy?Expiration
Memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy?(惰性)?expiration。?因此,Memcached不会在过期监视上耗费CPU时间。
LRU
Memcached会优先使用已超时的记录的空间,??但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为LeastRecentlyUsed??(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当内存空间不足时(?无法从slab?class获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,这是非常理想的存储方式。

数据流请求关系
用户第一次请求会直接访问数据库内容,memcached同时缓存这次请求的结果,当用户下次访问请求时,再次使用该数据memcached会直接从缓存中向客户端发送结果

安装memcached

memcached我们可以使用yum来进行安装,如果需要使用更新的版本功能则需要官网下载编译安装包来安装
memcached依赖libevent这个依赖包,如果没有安装可以主动安装或在安装memcached时会自动安装上

[root@localhost ~]# yum list |grep memcached
libmemcached.i686 1.0.16-5.el7 base ? ? 
libmemcached.x86_64 1.0.16-5.el7 base ? ? 
libmemcached-devel.i686 1.0.16-5.el7 base ? ? 
libmemcached-devel.x86_64 1.0.16-5.el7 base ? ? 
memcached.x86_64 1.4.15-10.el7_3.1 base ? ? 
memcached-devel.i686 1.4.15-10.el7_3.1 base ? ? 
memcached-devel.x86_64 1.4.15-10.el7_3.1 base ? ? 
opensips-memcached.x86_64 1.10.5-3.el7 epel ? ? 
php-ZendFramework-Cache-Backend-Libmemcached.noarch
php-pecl-memcached.x86_64 2.2.0-1.el7 epel ? ? 
python-memcached.noarch 1.48-4.el7 base ? ? 
uwsgi-router-memcached.x86_64 2.0.17.1-1.el7 epel ? ? 
[root@localhost ~]# rpm -qa libevent
libevent-2.0.21-4.el7.x86_64
[root@localhost ~]# yum install -y memcached
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00 ? ? 
epel/x86_64/metalink | 4.8 kB 00:00:00 ? ? 
epel | 3.2 kB 00:00:00 ? ? 
extras ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
省略-------------------
Running transaction
  Installing : memcached-1.4.15-10.el7_3.1.x86_64 1/1 
  Verifying : memcached-1.4.15-10.el7_3.1.x86_64 1/1 
Installed:
  memcached.x86_64 0:1.4.15-10.el7_3.1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
Complete!

定义memcached的启动配置参数
可以在memcached启动时来指定参数,可以在启动时指定这些配置。
查看memcached的进程,并了解memcached启动信息
-u是指定运行服务的用户,-p是监听的端口,-m预分配内存大小,-c最大产生进程数量

[root@localhost ~]# ps -aux |grep memcached
memcach+ 28555 0.0 0.0 344084 1672 ? Ssl 16:39 0:00 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024

另一种方式指定memcached的启动参数配置,需要编辑/etc/sysconfig/memcached这个配置文件
PORT指定监听端口
USER指定运行用户
MAXCONN指定最大进程数
CACHESIZE指定启动时分配的内存使用量大小
OPTIONS指定主机,可以在启动时使用-I选项指定监听ip,更多选项可以使用memcached -h来查看参数帮助

[root@localhost ~]# vim /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

查看memcached的工作状态

使用memcached自带工具查看运行状态
curr_time是缓存的项目数,get_hits是查询的命中数,使用命中数除以项目数可以得出memcached的命中率

[root@localhost ~]# memcached-tool 127.0.0.1:11211 stats
#127.0.0.1:11211 Field Value
 ? ? ? ? accepting_conns 1
 ? ? ? ? ? ? ? auth_cmds 0
 ? ? ? ? ? ? auth_errors 0
 ? ? ? ? ? ? ? ? ? bytes 0
 ? ? ? ? ? ?  bytes_read 7
 ? ? ? ? ? bytes_written 0
 ? ? ? ? ? ?  cas_badval 0
 ? ? ? ? ? ? ?  cas_hits 0
 ? ? ? ? ? ?  cas_misses 0
 ? ? ? ? ? ? ? cmd_flush 0
 ? ? ? ? ? ? ? ? cmd_get 0
 ? ? ? ? ? ? ? ? cmd_set 0
 ? ? ? ? ? ? ? cmd_touch 0
 ? ? ? ? ? ? conn_yields 0
 ? connection_structures 11
 ? ? ?  curr_connections 10
 ? ? ? ? ? ?  curr_items 0 ? ? 存储项目数
 ? ? ? ? ? ? ? decr_hits 0
 ? ? ? ? ? ? decr_misses 0
 ? ? ? ? ? ? delete_hits 0
 ? ? ? ? ? delete_misses 0
 ? ? ? evicted_unfetched 0
 ? ? ? ? ? ? ? evictions 0
 ? ? ? expired_unfetched 0
 ? ? ? ? ? ? ?  get_hits 0 ? ?  命中查询
 ? ? ? ? ? ?  get_misses 0
 ? ? ? ? ? ?  hash_bytes 524288
 ? ? ? hash_is_expanding 0
 ? ? ?  hash_power_level 16
 ? ? ? ? ? ? ? incr_hits 0
 ? ? ? ? ? ? incr_misses 0
 ? ? ? ? ? ? ?  libevent 2.0.21-stable
 ? ? ? ?  limit_maxbytes 67108864
 ? ? listen_disabled_num 0
 ? ? ? ? ? ? ? ? ? ? pid 28555
 ? ? ? ? ?  pointer_size 64
 ? ? ? ? ? ? ? reclaimed 0
 ? ? ? ? ?  reserved_fds 20
 ? ? ? ? ? rusage_system 0.018183
 ? ? ? ? ? ? rusage_user 0.036366
 ? ? ? ? ? ? ? ? threads 4
 ? ? ? ? ? ? ? ? ?  time 1538989698
 ? ? ? total_connections 11
 ? ? ? ? ? ? total_items 0
 ? ? ? ? ? ?  touch_hits 0
 ? ? ? ? ?  touch_misses 0
 ? ? ? ? ? ? ? ?  uptime 1759
 ? ? ? ? ? ? ? ? version 1.4.15

使用nc命令来查看memcached服务状态
nc命令默认不会安装在系统中,需要我们进行yum安装,nc命令的包名为nmap-ncat
安装nc命令

[root@localhost ~]# yum install nmap-ncat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * epel: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package nmap-ncat.x86_64 2:6.40-13.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
----------------------------省略
Running transaction
  Installing : 2:nmap-ncat-6.40-13.el7.x86_64 1/1 
  Verifying : 2:nmap-ncat-6.40-13.el7.x86_64 1/1 
Installed:
  nmap-ncat.x86_64 2:6.40-13.el7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
Complete!

使用echo过滤出nc的stats状态的输出内容
使用nc命令我们也可以查找出memcached存储和查询的数量相关状态信息

[root@localhost ~]# echo stats |nc 127.0.0.1 11211
STAT pid 28555
STAT uptime 2144
STAT time 1538990083
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.043580
STAT rusage_system 0.021790
STAT curr_connections 10
STAT total_connections 12
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0 ? ? ? ? 命中查询数
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 13
STAT bytes_written 1026
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 0
STAT curr_items 0 ? ? ? ? 项目缓存数
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END

使用memstat命令工具查看memcached的状态信息
使用memstat命令需要安装一个安装包才能正常使用,安装包名为libmamcached,若安装了则不需要再次进行安装(安装memcached时已经安装过了的)
使用memstat命令也可以查看到memcached的运行状态信息

[root@localhost ~]# memstat --servers=127.0.0.1:11211
Server: 127.0.0.1 (11211)
  pid: 28555
  uptime: 2522
  time: 1538990461
  version: 1.4.15
  libevent: 2.0.21-stable
  pointer_size: 64
  rusage_user: 0.053708
  rusage_system: 0.021790
  curr_connections: 10
  total_connections: 13
  connection_structures: 11
  reserved_fds: 20
  cmd_get: 0
  cmd_set: 0
  cmd_flush: 0
  cmd_touch: 0
  get_hits: 0         命中查询数
  get_misses: 0
  delete_misses: 0
  delete_hits: 0
  incr_misses: 0
  incr_hits: 0
  decr_misses: 0
  decr_hits: 0
  cas_misses: 0
  cas_hits: 0
  cas_badval: 0
  touch_hits: 0
  touch_misses: 0
  auth_cmds: 0
  auth_errors: 0
  bytes_read: 30
  bytes_written: 2072
  limit_maxbytes: 67108864
  accepting_conns: 1
  listen_disabled_num: 0
  threads: 4
  conn_yields: 0
  hash_power_level: 16
  hash_bytes: 524288
  hash_is_expanding: 0
  bytes: 0
  curr_items: 0            项目缓存数
  total_items: 0
  expired_unfetched: 0
  evicted_unfetched: 0
  evictions: 0
  reclaimed: 0

memcached数据导出和应用请看我后续笔记内容

memcached的安装启动(仅介绍安装和启动)

标签:机制   日期   least   json   mem   启动   loaded   errors   协议   

原文地址:http://blog.51cto.com/8844414/2314138

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!