Title: Jabali Cache
Author: apunker
Published: <strong>Òkúdù 27, 2026</strong>
Last modified: Agẹmọ  7, 2026

---

Ṣàwárí àwọn plugin

![](https://ps.w.org/jabali-cache/assets/banner-772x250.png?rev=3587768)

![](https://ps.w.org/jabali-cache/assets/icon-256x256.png?rev=3587768)

# Jabali Cache

 Láti ọwọ́ [apunker](https://profiles.wordpress.org/apunker/)

[Ṣe ìgbàsílẹ̀](https://downloads.wordpress.org/plugin/jabali-cache.1.0.5.zip)

 * [Àwọn àlàyé](https://yor.wordpress.org/plugins/jabali-cache/#description)
 * [Àwọn àgbéyẹ̀wò](https://yor.wordpress.org/plugins/jabali-cache/#reviews)
 *  [Ìgbéwọlẹ̀](https://yor.wordpress.org/plugins/jabali-cache/#installation)
 * [Ìdàgbàsókè](https://yor.wordpress.org/plugins/jabali-cache/#developers)

 [Ìrànlọ́wọ́](https://wordpress.org/support/plugin/jabali-cache/)

## Àpèjúwe

**Jabali Cache makes WordPress fast by keeping its object cache in Redis instead
of rebuilding it on every request.** WordPress normally throws away its internal
cache at the end of each request, so the same expensive database queries run again
and again. This plugin makes that cache persistent — backed by the Redis instance
the [Jabali hosting panel](https://jabali-panel.com) already runs — so pages assemble
from memory instead of hammering MySQL.

It is purpose-built for shared hosting, where many sites share one Redis server.
That shapes every design decision: strict per-site isolation, safe behaviour under
memory pressure, and a hard rule that a caching layer must _never_ take a site down.

#### Why you might want it

 * **Fewer database queries, faster pages.** Options, post meta, terms, user data
   and transients come from Redis on repeat requests instead of MySQL.
 * **Lighter database load.** Especially noticeable on WooCommerce, membership, 
   and query-heavy sites under traffic.
 * **Drop-in.** Activate it and WordPressÌtumọ̀ Yorùbá: ’s standard object-cache
   API (`wp_cache_*`, transients) starts using Redis. No theme or plugin changes.

#### Built for the way Jabali hosts sites

 * **Zero-config on Jabali.** Connects to the panel Redis over the unix socket `/
   run/redis/redis.sock`, logical database 1. Nothing to type — no host, port, or
   password.
 * **Strict per-site isolation.** Every install gets its own key prefix. Sites share
   one Redis database but can never read or flush each otherÌtumọ̀ Yorùbá: ’s cache.
   A siteÌtumọ̀ Yorùbá: ’s flush only clears that siteÌtumọ̀ Yorùbá: ’s keys.
 * **No phpredis required.** If the `redis` PHP extension is present it is used 
   automatically; if not (the Jabali default), the plugin falls back to a dependency-
   free, pure-PHP RESP client over the same socket. Either way it just works.
 * **Safe under memory pressure.** The panel Redis runs an `allkeys-lru` policy,
   so it may evict keys at any time. Every read is best-effort — an evicted or missing
   key simply falls through to the database. An eviction is never an error.
 * **Fails safe, always.** If Redis is unreachable for any reason, WordPress keeps
   running with its normal per-request cache. Nothing breaks; caching just stops
   accelerating until the connection is back. The admin screen tells you exactly
   what is wrong and how to fix it.
 * **Multisite-aware.** On a network, per-blog data is namespaced per site while
   genuinely global groups (network, site meta) are shared correctly.

#### Object cache vs. page cache

The persistent **object cache** is the main event and is on as soon as you activate
the plugin.

A full **page cache** is also included, but it is **off by default**. Jabali already
serves a faster page cache at the edge via nginx (FastCGI microcache), so turning
on the WordPress page cache as well would just cache the same HTML twice. Enable
the in-WordPress page cache only on hosts where the nginx one is not available.

#### Privacy

Jabali Cache stores WordPressÌtumọ̀ Yorùbá: ’s own cache data in your Redis server
and nowhere else. It does not collect analytics, contact any external service, or
send data off your server.

#### Support

Development happens on GitHub. Found a bug, or have a feature request? Please open
an issue:

[https://github.com/shukiv/jabali-panel/issues](https://github.com/shukiv/jabali-panel/issues)

## Ìgbéwọlẹ̀

#### On the Jabali panel (recommended)

 1. Install and activate **Jabali Cache**. Activation drops in `object-cache.php` automatically.
 2. In the panel, enable caching for the site (Applications  cache toggle). This provisions
    the siteÌtumọ̀ Yorùbá: ’s Redis socket access.
 3. Visit **Settings  Jabali Cache** and confirm **Redis connection: Connected**.

#### On any other host

 1. Upload the `jabali-cache` folder to `wp-content/plugins/` (or install the zip from
    Plugins  Add New).
 2. Activate **Jabali Cache**.
 3. Point it at your Redis server with a few constants in `wp-config.php` (see the 
    FAQ). Over a unix socket or TCP both work.
 4. Check **Settings  Jabali Cache** for a green connection status.

If the status ever shows **Not reachable**, the screen prints the exact prerequisite
to fix — and the site keeps working the whole time as a normal non-persistent cache.

## FAQ

### The status says Redis is “Not reachable”. What do I do?

On the Jabali panel, socket access is set up when you enable caching for the site(
Applications  cache toggle). If the status still shows Not reachable, re-run that
toggle.

On a standalone host, the siteÌtumọ̀ Yorùbá: ’s PHP-FPM user needs two things for
a unix socket:

 1. **open_basedir** must allow the socketÌtumọ̀ Yorùbá: ’s directory — add `/run/redis`(
    or wherever your socket lives) to the poolÌtumọ̀ Yorùbá: ’s `open_basedir`.
 2. **Read/write access to the socket** for the PHP-FPM user.

Until that is in place the plugin runs as a normal per-request cache and the site
is completely unaffected — caching just isnÌtumọ̀ Yorùbá: ’t persistent yet.

### Does it need the phpredis (PECL redis) extension?

No. It auto-detects phpredis and uses it when available; otherwise it uses a built-
in pure-PHP client. You get persistent caching either way.

### How do I use it outside the Jabali panel?

Define overrides in `wp-config.php`. With none of these set, it defaults to the 
Jabali socket and a per-site prefix.

    ```
    define( 'JABALI_CACHE_SOCKET', '/path/to/redis.sock' ); — unix socket, or:
    define( 'JABALI_CACHE_HOST', '127.0.0.1' );
    define( 'JABALI_CACHE_PORT', 6379 );
    ```

Optional:
 define( ‘JABALI_CACHE_DB’, 1 ); — logical database number define( ‘JABALI_CACHE_PASSWORD’,‘…’);—
Redis AUTH password define( ‘JABALI_CACHE_PREFIX’, ‘mysite’ ); — key prefix (auto-
derived per site if unset) define( ‘JABALI_CACHE_DISABLED’, true ); — force off 
without deactivating

### Will it isolate my cache from other sites on the same server?

Yes. Each install uses a unique key prefix, so reads, writes, and flushes are scoped
to your site only. One site cannot see or clear anotherÌtumọ̀ Yorùbá: ’s cache, 
even though they may share the same Redis database.

### Is it safe if Redis runs out of memory?

Yes. The expected policy is `allkeys-lru` — Redis evicts least-recently-used keys
when full. Every read in this plugin is best-effort, so an evicted key just rebuilds
from the database. There is no error path that can break the site under memory pressure.

### Does it work on WordPress Multisite?

Yes. Per-site cache data is namespaced per blog, while truly global cache groups
are shared across the network as WordPress expects.

### Should I also turn on the page cache?

Only if your host does not already have one. On Jabali, nginx serves a FastCGI microcache
at the edge, which is faster than caching in PHP — so the WordPress page cache stays
off by default to avoid double-caching. Off Jabali, you can enable it from the settings
screen.

### How do I manage it from WP-CLI?

wp jabali-cache status # connection, driver, prefix, key count, page-cache state

wp jabali-cache flush # flush this siteÌtumọ̀ Yorùbá: ’s object cache wp jabali-
cache flush Ìtumọ̀ Yorùbá: –pages # also purge page-cache entries wp jabali-cache
enable # enable caching wp jabali-cache disable # disable caching wp jabali-cache
update-dropins # (re)install the wp-content drop-ins wp jabali-cache remove-dropins#
remove the drop-ins wp jabali-cache diagnose # full connectivity + environment report

### What happens when I uninstall it?

Deactivating removes the `object-cache.php` drop-in cleanly, so WordPress reverts
to its built-in non-persistent cache. Uninstalling removes the pluginÌtumọ̀ Yorùbá:’
s options. Your Redis data is just a cache and is safe to discard.

## Àwọn àgbéyẹ̀wò

Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.

## Àwọn Olùkópa & Olùgbéejáde

“Jabali Cache” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa
sí plugin yìí.

Àwọn Olùkópa

 *   [ apunker ](https://profiles.wordpress.org/apunker/)

[Túmọ̀ “Jabali Cache” sí èdè rẹ.](https://translate.wordpress.org/projects/wp-plugins/jabali-cache)

### Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?

[Ṣàwárí koodu](https://plugins.trac.wordpress.org/browser/jabali-cache/), ṣàyẹ̀wò
[ibi ìpamọ́ SVN](https://plugins.svn.wordpress.org/jabali-cache/), tàbí ṣe àgbékalẹ̀
sí [àkọsílẹ̀ ìdàgbàsókè](https://plugins.trac.wordpress.org/log/jabali-cache/) nípasẹ̀
[RSS](https://plugins.trac.wordpress.org/log/jabali-cache/?limit=100&mode=stop_on_copy&format=rss).

## Àkọsílẹ̀ àwọn àyípadà

#### 1.0.5

 * Redis object-cache socket failures (`Permission denied`) now include an actionable
   hint that the siteÌtumọ̀ Yorùbá: ’s PHP-FPM user was missing from the `jabali-
   redis-clients` group; the panel self-heals that membership every reconcile and
   restarts the pool (GH #410 follow-up).

#### 1.0.4

 * Batch multi-key object-cache writes: set_multiple/add_multiple now pipeline their
   Redis commands and delete_multiple uses one native multi-key UNLINK, instead 
   of one round-trip per key (GH #607).
 * Use a persistent Redis connection (pconnect) when the phpredis extension is present,
   so steady-state requests skip the connect handshake (GH #606).
 * Auto-purge the Jabali nginx page cache when content changes (GH #611): post edits
   purge that postÌtumọ̀ Yorùbá: ’s URL + the home page (targeted, GH #619); theme/
   option/comment changes purge the whole domain. On Jabali only; a no-op elsewhere.

#### 1.0.3

 * Object-cache incr()/decr() now preserve an existing key TTL (SET … KEEPTTL) instead
   of dropping it, so counters/throttles with an expiry are no longer immortalised(
   GH #604).
 * Page-cache content-change purge hooks now gate on the same runtime config the
   cache serves from, so pages no longer go stale when page cache is enabled by 
   constants (GH #603).
 * Redis cache flushes/purges now use non-blocking UNLINK instead of DEL, so a large
   flush no longer stalls the shared Redis event loop or spikes latency for other
   tenants (GH #608).

#### 1.0.2

 * Redesigned the configuration section into a modern, card-based layout (GH #614):
   
   a top “Drop-ins & Settings” card, then numbered cards — (1) General Cache Settings,(
   2) Redis Connection, (3) Full-page Cache, (4) Advanced/Notes — in a responsive
   two-column layout, with clear labels + helper text and a show/hide toggle on 
   the Redis password. Existing save/install/remove behavior preserved; settings-
   only change (drop-in versions unchanged).

#### 1.0.1

 * Redesigned the admin dashboard (Settings  Jabali Cache): large page title, a
   
   drop-in status banner, four at-a-glance metric cards (caching enabled, Redis 
   connection, server page cache, request hit ratio), and a two-column layout with
   a Cache Status card, a Technical Details card, and an Actions card (Flush cache
   now / Refresh status / View documentation). Modern card styling with icons and
   clear success/neutral colors. All existing operational data and actions are preserved;
   the connection settings and drop-in management moved below the dashboard. No 
   behavior change to caching itself. (GH #609)

#### 1.0.0

 * Initial release.
 * Persistent Redis object cache with strict per-site key isolation.
 * Pure-PHP Redis client fallback when the phpredis extension is absent.
 * Optional full-page cache (off by default; complements the nginx edge cache).
 * WP-CLI commands: status, flush, enable, disable, update-dropins, remove-dropins,
   diagnose.
 * Admin diagnostics screen with live connection status and fix-it guidance.
 * Multisite-aware namespacing.
 * Fail-safe: WordPress keeps running normally whenever Redis is unavailable.

## Àkójọpọ̀ Meta

 *  Ẹ̀yà **1.0.5**
 *  Ìgbàgbọ́hùn tó kẹ́yìn **wákàtí 3 sẹ́yìn**
 *  Àwọn ìgbéwọlẹ̀ tó ṣiṣẹ́ **Tó kéré sí 10**
 *  Ẹ̀yà WordPress ** 5.6 tàbí ju bẹ́ẹ̀ lọ **
 *  Dánwò dé **7.0**
 *  Ẹ̀yà PHP ** 7.4 tàbí ju bẹ́ẹ̀ lọ **
 *  Èdè
 * [English (US)](https://wordpress.org/plugins/jabali-cache/)
 * Àwọn àmì
 * [cache](https://yor.wordpress.org/plugins/tags/cache/)[object cache](https://yor.wordpress.org/plugins/tags/object-cache/)
   [page cache](https://yor.wordpress.org/plugins/tags/page-cache/)[performance](https://yor.wordpress.org/plugins/tags/performance/)
   [redis](https://yor.wordpress.org/plugins/tags/redis/)
 *  [Ìwòye Tó Péye](https://yor.wordpress.org/plugins/jabali-cache/advanced/)

## Àwọn ìbò

Kò sí ìwádìí tí a tíì fi ránṣẹ́.

[Your review](https://wordpress.org/support/plugin/jabali-cache/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/jabali-cache/reviews/)

## Àwọn Olùkópa

 *   [ apunker ](https://profiles.wordpress.org/apunker/)

## Ìrànlọ́wọ́

Nǹkan wà tí o fẹ́ sọ? Ṣé o nílò ìrànlọ́wọ́?

 [Wo àpéjọ ìrànlọ́wọ́](https://wordpress.org/support/plugin/jabali-cache/)