Closed Bug 1513099 (bmo-redis) Opened 7 years ago Closed 3 months ago

BMO needs to support Redis as an alternative to Memcached, possibly replacing it

Categories

(bugzilla.mozilla.org :: General, enhancement)

Production
enhancement
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: dylan, Unassigned)

References

Details

(Keywords: bmo-big)

There is no direct equivalent of the Elasticache memcached in GCP. As such it would be useful if instead of memcached, BMO could make use of Redis. There's a number of options for this -- Cache::Redis, CHI with Cache::Redis, or perhaps Mojo::Redis (but the later has a warning about using it, I'll need to ask batman about it). Also open questions are if the calls we're making to memcached map well to redis, mostly the CAS (compare and set) operations used for rate limiting. I intend to ask smacleod about this.
Alias: bmo-redis
Keywords: bmo-big
So, can we map the following memcached commands to redis? Basic caching (core bugzilla feature too) * get * set * delete Used for rate limiting: * get_multi * gets (returns a value and its CAS token) * cas (Check-And-Set or Compare-And-Swap)
Flags: needinfo?(smacleod)
(In reply to Dylan Hardison [:dylan] (he/him) from comment #1) > So, can we map the following memcached commands to redis? > > Basic caching (core bugzilla feature too) > * get https://redis.io/commands/get > * set https://redis.io/commands/set > * delete https://redis.io/commands/del > Used for rate limiting: > * get_multi https://redis.io/commands/mget > * gets (returns a value and its CAS token) > * cas (Check-And-Set or Compare-And-Swap) Redis doesn't work the same way, but you can handle the same use cases, see https://redis.io/topics/transactions Other things you might want to take a look at: - https://redis.io/topics/lru-cache#eviction-policies - https://redis.io/topics/data-types-intro (redis has fancier data types and can do a lot more. Might handle some of your use cases better with built-in things. Also information about expiry etc.)
Flags: needinfo?(smacleod)
(In reply to Steven MacLeod [:smacleod] from comment #2) > (In reply to Dylan Hardison [:dylan] (he/him) from comment #1) > > * gets (returns a value and its CAS token) > > * cas (Check-And-Set or Compare-And-Swap) > Redis doesn't work the same way, but you can handle the same use cases, see > https://redis.io/topics/transactions Forgot to mention, sharing the specific use cases could be helpful, as they might be solved by purpose made commands like https://redis.io/commands/incr
Depends on: 1521883

Probably sticking with Memcache for the foreseeable future since it is widely supported.

Status: NEW → RESOLVED
Closed: 3 months ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.