Separate Caching Redis from Webhooks Redis #2684

Closed
opened 2025-12-29 18:21:06 +01:00 by adam · 1 comment
Owner

Originally created by @cimnine on GitHub (Jun 21, 2019).

Environment

  • Python version: 3.6
  • NetBox version: 2.6

Proposed Functionality

Having the ability to configure a separate Redis connection for the caching purpose and one for the webhooks delivery purpose.

Use Case

The Redis required for caching has different requirements regarding data persistency than the Redis for delivering webhooks.

While it doesn't matter for the caching Redis if the data is lost, I would try to avoid data loss for the webhooks Redis.

They also have two different access patterns: One is only ever accessed by one client, i.e. my Netbox instance, while the other is accessed by potentially many clients, i.e. at least one Netbox instance and at least one webhook worker.

And in a container-world this matters: The caching Redis would be an instance that is deployed as a sidecar to the Netbox instance, i.e. in the same pod. The webhooks Redis is a shared instance and would therefore be deployed on it's own, potentially with slaves for redundancy purposes, and definitely have some kind of persistent storage attached.

Therefore it would be nice if I could configure two Redis instances in Netbox, one for caching and one for delivering webhook invocations.

Database Changes

Not necessary

External Dependencies

None

Originally created by @cimnine on GitHub (Jun 21, 2019). <!-- NOTE: This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.6 * NetBox version: 2.6 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality Having the ability to configure a separate Redis connection for the caching purpose and one for the webhooks delivery purpose. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case The Redis required for caching has different requirements regarding data persistency than the Redis for delivering webhooks. While it doesn't matter for the caching Redis if the data is lost, I would try to avoid data loss for the webhooks Redis. They also have two different access patterns: One is only ever accessed by one client, i.e. my Netbox instance, while the other is accessed by potentially many clients, i.e. at least one Netbox instance and at least one webhook worker. And in a container-world this matters: The caching Redis would be an instance that is deployed as a sidecar to the Netbox instance, i.e. in the same pod. The webhooks Redis is a shared instance and would therefore be deployed on it's own, potentially with slaves for redundancy purposes, and definitely have some kind of persistent storage attached. Therefore it would be nice if I could configure two Redis instances in Netbox, one for caching and one for delivering webhook invocations. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes Not necessary <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None
adam added the status: acceptedtype: feature labels 2025-12-29 18:21:06 +01:00
adam closed this issue 2025-12-29 18:21:06 +01:00
Author
Owner

@lampwins commented on GitHub (Jun 21, 2019):

I could see us mimicking the Django DATABASE dict in which several configurations can be defined.

Something like:

REDIS = {
    'webhooks': {
        ...
    },
    'caching': {
        ...
    }
}

The actual connection logic is already duplicated in that we open separate connections for cacheops and rq, so that won't require any additional overhead.

@lampwins commented on GitHub (Jun 21, 2019): I could see us mimicking the Django `DATABASE` dict in which several configurations can be defined. Something like: ``` REDIS = { 'webhooks': { ... }, 'caching': { ... } } ``` The actual connection logic is already duplicated in that we open separate connections for cacheops and rq, so that won't require any additional overhead.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#2684