php memcache和php memcached比较以及问题
php memcache和php memcached是php的memcache分布式的高速缓存系统的两个客户端,php memcache是老客户端,php memcached是功能更加完善的新的代替php memcached的.
php memcache独立用php实现,是老客户端,从我们实践中已发现有多个问题,而且功能少,属性也可设置的少;
php memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached.
1.Php memcache的问题
1.1 分布式问题
php memcache默认会自动切换实例,所以有时取到老数据,并且value飘忽不定.
网友分享的问题:
这几天做某个产品的时候遇到一个小问题,现象比较诡异,产品用了两台分布式的memcached服务器,某一个计数器取回来的数偶尔会不对,最后定位在php memcache client的failover机制上面.
我们知道,在memcached分布式环境下,某一个key是通过hash计算,分配到某一个memcached上面的.
如果php.ini里面 memcache.allow_failover = 1的时候,在分布式环境下,某一台memcached出问题的话,会自动到其他的memcached尝试,就会出现上面的问题,所以要设置 allow_failover = 0 那么取不到时就直接返回失败而不会从其它mc上取,这样以避免网络异常或server端异常时,经常切换实例,会取到老数据.
1.2 高并发下稳定性问题
新浪微博提到的教训:
php memcache换成php memcached,在高并发下稳定下极大提高;
另外功能更多,出错码更精确。
Twitter的缓存经验
多层次Cache,减轻某些cache节点宕掉后的影响,读写都cache;将memcached api统一换为libmemcached(方便多语言访问memcached,让分布式等各种规则都一致).
1.3 1秒超时间隔没法修改问题
php memcache客户端有个1秒超时间隔没法修改问题:
bool Memcache::connect(string $host [,int $port [,int $timeout ]])
第三个参数本来可设置timeout,单位秒,但无法修改.
测试了以下三种修改timeout的方法都无效:
1.3.1. 用memcache api Memcache::setServerParams不能修改;
1.3.2. 改memcache 源代码vi php_memcache.h宏定义不能修改;
1.3.3. php.ini内这个配置:default_socket_timeout = 60对本timeout无效。
2.memcache和memcached对比
Php memcache这个老客户端在属性设置方面可设置的很少,出错码粒度很粗,出错后难以定位,而且功能欠缺一些:
There are primarily two clients used with PHP. One is the older, more widespread pecl/memcache and the other is the newer, less used, more feature rich pecl/memcached. Both support the basics such as multiple servers, setting vaules, getting values, increment, decrement and getting stats. Here are some more advanced features and information. 项目 pecl/memcache pecl/memcached First Release Date 2004-06-08 2009-01-29 (beta) Actively Developed Yes Yes External Dependency None libmemcached Automatic Key Fixup1 Yes No Append/Prepend No Yes Automatic Serialzation2 Yes Yes Binary Protocol No Optional CAS No Yes Compression Yes Yes Communication Timeout Connect Only Various Options Consistent Hashing Yes Yes Delayed Get No Yes Multi-Get Yes Yes Session Support Yes Yes Set/Get to a specific server No Yes Stores Numerics Converted to Strings Yes //注释: 1 pecl/memcache will convert an invalid key into a valid key for you. pecl/memcached will return false when trying to set/get a key that is not valid. 2 You do not have to serialize your objects or arrays before sending them to the set commands. Both clients will do
本文地址:
转载随意,但请附上文章地址:-)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Web 開発では、Web サイトのパフォーマンスと応答速度を向上させるためにキャッシュ テクノロジを使用する必要があることがよくあります。 Memcache は、あらゆる種類のデータをキャッシュでき、高い同時実行性と高可用性をサポートする一般的なキャッシュ テクノロジです。この記事では、PHP 開発で Memcache を使用する方法を紹介し、具体的なコード例を示します。 1. Memcache のインストール Memcache を使用するには、まずサーバーに Memcache 拡張機能をインストールする必要があります。 CentOS オペレーティング システムでは、次のコマンドを使用できます。

PHP 開発では、Memcache キャッシュ システムを使用すると、データの読み取りと書き込みの効率が大幅に向上します。 Memcache は、データベースの頻繁な読み取りと書き込みを回避するためにデータをメモリにキャッシュできるメモリベースのキャッシュ システムです。この記事では、PHP で Memcache を使用して効率的なデータの読み取りおよび書き込み操作を行う方法を紹介し、具体的なコード例を示します。 1. Memcache のインストールと構成 まず、サーバーに Memcache 拡張機能をインストールする必要があります。通過できる

PHP 開発で効率的なデータの書き込みとクエリを行うために Memcache を使用するにはどうすればよいですか?インターネット アプリケーションの継続的な開発に伴い、システム パフォーマンスの要件はますます高くなっています。 PHP開発では、システムのパフォーマンスや応答速度を向上させるために、さまざまなキャッシュ技術を使用することがよくあります。一般的に使用されるキャッシュ テクノロジの 1 つは Memcache です。 Memcache は、データベース クエリ結果、ページ フラグメント、セッション データなどをキャッシュするために使用できる高性能分散メモリ オブジェクト キャッシング システムです。データをメモリに保存することで

Web アプリケーションがますます複雑になるにつれて、パフォーマンスが重要な問題になっています。多くのアプリケーションにおいて、データベース クエリは最も時間のかかる操作の 1 つです。データベースからデータを頻繁に読み取ることを避けるために、キャッシュ システムを使用して、頻繁に読み取られるデータをメモリに保存し、すぐにアクセスできるようにすることができます。 PHP 開発では分散キャッシュに Memcached を使用することが非常に一般的ですが、この記事では分散キャッシュに Memcached を使用する方法を紹介します。メムカとは

PHP でのデータ対話を最適化するための Memcache キャッシュ テクノロジの実践と考え方 最新の Web アプリケーションでは、データ対話は非常に重要な問題ですが、効率が十分ではなく、Web アプリケーションのスケーラビリティとパフォーマンスを制限します。データのやり取りを高速化するために、私たちの通常のアプローチは、データベースの設計を最適化し、ハードウェアのパフォーマンスを向上させ、サーバーの容量を増やすことです。ただし、これらの方法にはすべて、システムのコストが増加するという共通の制限があります。近年、Memcache テクノロジーがこの問題の解決に進歩しました。

インターネットの急速な発展に伴い、同時に大量のリクエストに対応する必要があるアプリケーションが増加しており、アプリケーションの同時処理能力をいかに向上させるかが開発者にとって解決すべき課題となっています。その中でも、同時実行性の最適化に Memcache キャッシュ テクノロジを使用することは、比較的一般的なソリューションとなっています。 Memcache は、大規模な Web アプリケーション、データベース、分散システムに適した効率的なキャッシュ テクノロジです。データをメモリに格納し、高速な読み書きを実現するのが特徴です。 Web アプリケーションのデータ アクセス プロセス中に、

Memcache は、オープンソースの分散キャッシュ テクノロジです。データをメモリに保存することでデータ アクセスの速度が大幅に向上し、Web サイトのパフォーマンスと応答性が向上します。 PHP プロジェクトでは、Memcache キャッシュ テクノロジも広く使用されており、良好な結果を達成しています。この記事では、PHP プロジェクトにおける Memcache キャッシュ テクノロジのアプリケーションと実践について詳しく説明します。 1. Memcache の原理と利点 Memcache は、データを保存できるメモリ キャッシュ テクノロジです。

Memcache を使用して PHP アプリケーションのデータ ストレージ操作を最適化するにはどうすればよいですか? Web アプリケーション開発において、データ ストレージは重要なリンクです。 PHP アプリケーションでは、メモリ キャッシュ システムとして Memcache を使用することで、データの保存と読み取り操作の効率を効果的に向上させることができます。この記事では、Memcache を使用して PHP アプリケーションのデータ ストレージ操作を最適化する方法を紹介し、具体的なコード例を添付します。ステップ 1: Memcache 拡張機能をインストールする まず、PHP 環境に Memcache 拡張機能をインストールする必要があります
