memcached

nosql介绍:

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

 

memrcached介绍 

Memcached是国外社区网站LiveJournal团队开发,目的是为了通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能。  官方站点 http://www.memcached.org/  

  • 数据结构简单(k-v),数据存放在内存里
  •  多线程
  •  基于c/s架构,协议简单
  •  基于libevent的事件处理
  •  自主内存存储处理(slab allowcation)
  •  数据过期方式:Lazy Expiration 和 LRU
  • Lazy Expiration:Memcached 内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。
  • LRU:这是删除“最近最少使用”的记录的机制。因此,当内存空间不足时(无法从slab class获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。
  • 不支持持久化,重启服务则数据丢失,支持备份内存中的数据

Memcached的数据流向

 

Memcached基本命令以及备份还原:

安装
yum install -y memcached

启动
systemctl start memcached


配置文件:/etc/sysconfig/memcached
PORT="11211"  端口
USER="memcached" 用户
MAXCONN="1024" 最大并发数
CACHESIZE="64" 分布的内存数
OPTIONS=""  监听的IP


查看memcached的运行状态:
memcached-tool 127.0.0.1:11211 stats 
 get_misses除以curr_items可以得出命中的百分比


连接memcached:
telnet 127.0.0.1 11211  
进来后语法规则是:
<command name> <key> <flags> <exptime> <bytes> \r\n <data block>\r\n

<command name> 
1.命令可以是set没有的时候增加,如果有值则覆盖。
2.add也是添加数据,但如果值存在则失败。
3.replace:按照相应的key替换数据,如果key值不存在则操作失败。
4.get  查询
5.delete 删除

<key>需要保存数据的key(名字)

<flags> 该标志将和需要存储的数据一起存储,并在客户端get数据时返回(具体看开发的需求)

<exptime>过期时间

<bytes> 需要存储的字节数

\r\n 回车

<data block>需要存储的内容

整体示例:
添加一个k-v:set key1 0 30 2 回车后输入内容,即可存储
添加:set key1 0 30 2
ab
STORED
查询:get key1
VALUE key1 0 2
ab
END
更改:replace key1 1 200 3
abc
STORED
删除:delete key1



备份memcached
memcached-tool 127.0.0.1:11211 dump > data.txt

导入还原:
1.安装nc包 yum install -y nc
2.nc 127.0.0.1 11211 < data.txt
注意:这里需要修改下data.txt里面的内容的时间戳,用date -d "+1 hour" +%s 获取时间后,再修改。


PHP连接Memcached

加入memcached的扩展模块
cd /usr/local/src
git clone https://github.com/websupport-sk/pecl-memcache memcache
cd memcache

/usr/local/php/bin/phpize  
./configure --with-php-config=/usr/local/php/bin/php-config  
make && make install  

注意:如果phpize没有生产 configure文件,需要安装yum -y install autoconf

然后添加模块
vim php.ini
extension="memcache.so“
重启php-fpm
/etc/init.d/php-fpm restart 
查看是否有扩展:
/usr/local/php-fpm/sbin/php-fpm -m |grep memcache


PHP存储session

本实例是在lamp/lnmp环境下实现
编辑php.ini添加两行
session.save_handler = memcache session.save_path = "tcp://172.18.220.248:11211"  
或者httpd.conf中对应的虚拟主机中添加(Apache使用)
php_value session.save_handler "memcache" php_value session.save_path "tcp://192.168.0.9:11211"  
或者php-fpm.conf对应的pool中添加(nginx使用)
php_value[session.save_handler] = memcache
php_value[session.save_path] = " tcp://172.18.220.248:11211 "

 

apache连接memcached

转载: http://www.runoob.com/memcached/php-connect-memcached.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值