虽然有点晚,但我决定学习一下memcached
概述
在NoSQL领域中,我们可以看到Redis、Cassandra和Couchbass变得流行起来。
但是,这次我们将会整理一下关于我们在业务中使用的memcached的重新学习。
“Memcached是什么?”
memcached是一种可以构建分布式缓存系统的软件。
它可以使用键值存储方式来保存数据,并以NoSQL方式将数据保存在内存中。
kvsとは?
データの保存・管理手法の一つ。
任意の値(value)に対して対応する標識(key)を設定して保存する方法。
特点
-
- メモリ上にデータを保存しているため、データの書き込み・読み込みが早い。
-
- RDBと組み合わせる事で、RDBの読み込みの負担を軽減できる。
-
- クライアントライブラリで分散処理を実装できる。
-
- メモリ上にデータを保存しているため、memcachedの再起動を行うとデータがリセットされる。
- 設定した容量を超えると利用されないキャッシュから順番に消える(LRU)。
LRUとは?
未使用の時間が最も低いものを判定するアルゴリズム
关于分散处理
可以使用Memcached客户端库来实现分布式处理。
在PHP的Memcache库中,通过将分布式处理实现为每个键使用不同的服务器来实现。
调用方式也采用相同的算法,以引用保存的Memcached内容。
PHP的客户端库
内存缓存
特点
-
- PHP4.3.3以上で使用可能
- インストール時に他のライブラリに依存しない
内存缓存
特征
-
- PHP5.2.0以上で使用可能
-
- インストール時にlibmemcachedモジュールが必要
- memcacheより利用できるメソッドが多いらしい
引进
内存缓存
本文介绍了两种引入方法,分别是源代码安装和通过yum进行安装。本次将采用yum进行安装。
yum install -y memcached
PHP库
你可以使用yum来安装PHP库。
请确保与服务器的PHP版本相匹配。
本次为了进行操作确认,我们将同时安装memcache和memcached,但实际使用只需要安装其中一个即可。
yum install -y php72-php-pecl-memcache
yum install -y php72-php-pecl-memcached
只需与其他扩展一样,在php.ini中进行添加。
extension=memcache.so
extension=memcached.so
这应该可以运行,但是出现了以下的警告。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: memcached_touch in Unknown on line 0
根据这个参考,我们已经进行了相应的处理,使其正常运作起来了。
快慢对比
我們可以比較一下 PHP 程式庫的讀取和寫入速度。從執行結果來看,似乎Memcached略微優於其他選項。
ライブラリ名書き込み読み込みMemcache0m23.270s0m21.703sMemcached0m19.938s0m19.213s
源代码在这里
请参考以下资料
参考文献
参考资料如下:
请参考这些资料
以下为相关参考资料
请查阅以下参考资料
安装PHP的Memcached模块