y62wang
y62wang

Reputation: 568

how to build a in-memory server side cache in php?

I am trying to reduce the amount of database access by providing a in memory cache. I understand that I can get a cache by using session and cookies, however this only works on a per client basis. if the same query is made once in every session, then the cache will be useless. But I only want to access the database once and have it cached.

Is there a way to make create a cache in memory that can be accessed by the server side script? I don't want to store the cache data in a file ..

Upvotes: 8

Views: 15157

Answers (4)

Artefact2
Artefact2

Reputation: 7634

Memecached/Memcache are the most widely used solutions if you want to have multiple servers or be able to access the cache with several machines.

However, if you only want your cache to be local (on the same machine that runs the PHP code), you have other, somewhat easier choices :

The APC module can also store stuff in the memory with apc_add, apc_fetch etc…

Or you can use standard files in a tmpfs. This has the advantage of being completely portable, and you can set it up very quickly if any caching system uses files.

Upvotes: 1

rodneyrehm
rodneyrehm

Reputation: 13557

On a shared hosting space you may not have memcache available. Check APC in that case. Memcache really rocks if you're running on multiple machines. If you're running your site on a single web server APC will do the same job (with lower overhead).

Upvotes: 2

Peter
Peter

Reputation: 16923

Try MemCache

Memcache module provides handy procedural and object oriented interface to memcached, highly effective caching daemon, which was especially designed to decrease database load in dynamic web applications.

Upvotes: 0

GolezTrol
GolezTrol

Reputation: 116110

You can use MemCache, if installed.

Another option is creating a table in MySQL with storage type MEMORY. You will still use the database, but it will be quite a lot faster. But MemCache will really cut the load on the database, because you can cache the data outside the database, even on a different server.

Upvotes: 4

Related Questions