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