2016-07-25 4 views
0

私はmemcachedを使用してPHP Webサイトのグローバル状態を保存しています。格納されたデータには、ログインしているすべてのユーザーからの要求によってアクセスする必要があります。memcachedにオブジェクトの永続性を保証する方法はありますか?

memcachedがいっぱいになると、最も古いオブジェクトがダンプされることに気づいています。この場合に使用できる代替手段がありますか?

また、memcachedを無視してください。 MySQLに頼らずにPHPでグローバルな状態を保存するより速い方法は何ですか?

+0

MySQLを使用するのが気にならないのはなんですか? – bnxio

+0

物事をスピードアップしようとしています。私が格納しているのは、9つの配列でソートされたタプル{'userid'、 'state1'、 'state2'、 'state3}です。 –

答えて

0

セッションでJSONとして保存できます。 PHPでmemcachedの代わりにRedisを使用して、最大メモリ使用量を設定することもできます。

+0

Redisは良いオプションのようです、ありがとう。セッションに関しては、ユーザー単位ではなく、グローバルではありませんか? –

+0

はい、セッションはユーザーごとです。グローバルなものについては、Redisを使用してください。 – Eric

0

あなたの質問は、何かを長い間メモリに保存する方法を尋ねるようなものです。

Memcacheは、古いアイテムがいっぱいで、別のアイテムを追加した場合、古いアイテムを削除します。あなたのアプリケーションは、キャッシュがnullを返すか、何らかの理由で無効になったときに、キャッシュにいくつかのアイテムを入れる手続きがアクティブになるように動作するはずです。このような soemthing:アイテムがnullでない場合 1-キャッシュ 2-からアイテムを読み取る項目 -4-は5-キャッシュにアイテムを置くデータベースから項目(または他のソース)を読み取る3-リターン 6-商品を返品する

キャッシュは永久的なメモリではなく、現金なしでも動作するようにアプリケーションをデザインする必要があります。

しかし、アプリケーション状態であるため、おそらくその項目への呼び出しが非常に高く、キューの最後には移動しません。 これは良いアプローチではありませんが、キャッシュからそのアイテムを取得してキューの最後に移動しないようにするサービスを作成することもできます。

関連する問題