Commit Graph

10 Commits

Author SHA1 Message Date
Joe Grigg
520d8df7a1 Added extra redis cache adapter configuration options
no refs

- This enables supplying a username to connect to redis with when connection to an individual node rather than a cluster.
- It also allows for extra options to be given to the ioredis store used in the background.
2023-10-31 13:58:22 +00:00
Naz
cc48ead945 Added option to share redis connections across caches
closes https://github.com/TryGhost/Arch/issues/85

- Added a cache configuration option to signal "reuse of redis connection" for Redis cache adapter. The connection reuse it turned on by default to be shared between caches. They rely on unique "keyPrefix" structure, so there is no collision side-effects when reusing same Redis Store.
- The Redis connection options like "ttl" are shared with the first connection that's crated. So if there's a need to have unique configuration, a separate connection has to be created by passing `"reuseConnection": false` parameter
2023-09-07 13:32:00 +08:00
Naz
05a4d2cc79 Added error handling for cache reset function
Makes sure the Ghost process does not blow up in case there's an error in
communication with Redis
2023-08-10 17:17:29 +01:00
Joe Grigg
b84ed78078 Added a reset method to the redis cache adapter
This allows us to reset cache rather than having to wait for the TTL period.
2023-08-10 17:17:29 +01:00
Joe Grigg
a50ef81148 Added a method to get all raw keys in the redis cache adapter
This allows for easy access to the raw, unprocessed, keys that a site has
stored in the cache. These include all key prefixes.
2023-08-10 17:17:29 +01:00
Joe Grigg
ed38760c6d Added support for non cluster connections in the redis cache adapter
Previously, the adapter was only built for a redis cluster connection. Meaning
if you tried to use if with a redis that was a single node it would fail as it
tries to find a primary node. In a single node setup there is no primary node,
just the one main node. So, this update tricks the adapter into thinking it has
found a pimary node by returning the whole connection (to the single node) when
the constructor is note a cluster.
2023-08-10 17:17:29 +01:00
Fabien "egg" O'Carroll
104f84f252 Added eslint rule for file naming convention
As discussed with the product team we want to enforce kebab-case file names for
all files, with the exception of files which export a single class, in which
case they should be PascalCase and reflect the class which they export.

This will help find classes faster, and should push better naming for them too.

Some files and packages have been excluded from this linting, specifically when
a library or framework depends on the naming of a file for the functionality
e.g. Ember, knex-migrator, adapter-manager
2023-05-09 12:34:34 -04:00
Naz
d62eba6c7f
Fixed Redis cluster ttl configuration
refs https://github.com/TryGhost/Toolbox/issues/520

- The cluster config is taking over local adapter ttl configuration - the priority should be reverse adapter config first followed by cluster config
- In addition if we add nested config merging to adapter manager we could achieve the same effect by having per-adapter configuraiton with "clusterConfig.options.ttl" value
2023-02-15 11:39:04 +08:00
Naz
7c18263227 Extracted adapter-cache-redis from core codebase
refs https://github.com/TryGhost/Toolbox/issues/515

- This implementation allows to use Redis cluster as a caching adapter. The cache adapter can be configured through same adapter configuration interface as others. It accepts following config values:
  - "ttl" - time in SECONDS for stored entity to live in Redis cache
  - "keyPrefix" - special cache key prefix to use with stored entities
  - "host" / "port" / "password" / "clusterConfig" - Redis instance specific configs
- Set test coverage to non-standard 75% because the code mostly consists of the glue code that would require unnecessary Redis server mocking and would be a bad ROI. This module has been used in production for a long time already, so can be considered pretty stable.
2023-02-13 19:01:43 +08:00
Naz
b3252f956f Added adapter-cache-redis package
refs https://github.com/TryGhost/Toolbox/issues/515

- Redis-based caches can be used on hosted-environments to store information with high memory impact - when in-memory caches would be too impractical to use
- This is a placeholder package for a cluster-aware Redis cache implementation compatible with Ghost's cache adapter interface (a41d351f16/packages/adapter-base-cache)
2023-02-13 19:01:43 +08:00