==============================================================================
Django Redis Admin
==============================================================================
.. Travis status:
.. image:: https://travis-ci.org/WoLpH/django-redis-admin.svg?branch=master
:target: https://travis-ci.org/WoLpH/django-redis-admin
Introduction
==============================================================================
With `django-redis-admin` you can view (and in the future, edit) your Redis
databases. It supports simple servers, master slave setups and sentinel setups.
The admin works by creating a `RedisQueryset` which fakes Django models and
querysets so the `ModelAdmin` thinks it's using a regular database backed model.
Since Redis only supports basic types the library allows for optional `base64`
encoding/decoding and `json` encoding/decoding.
While I would not recommend using it as a regular queryset to access Redis. In
addition to querying data it does some extra queries which you usually don't
need (such as fetching idle data) and it does some automatic conversion steps.
Requirements
==============================================================================
* Python `3.6` and above
* Django (tested with 2.1, probably works with any version that supports
Python 3)
* Python-redis (`pip install redis`)
Installation
==============================================================================
`django-redis-admin` can be installed via pip.
.. code-block:: bash
pip install django-redis-admin
Then just add `redis_admin` to your `INSTALLED_APPS`.
Optionally, configure your servers if you have multiple and/or non-standard
(i.e. non-localhost) redis servers.
Below are several example configurations. The default settings can always be
found in `redis_admin/settings.py`
You can run the demo project using the following commands:
.. code-block:: bash
cd test_redis_admin
python manage.py runserver
The default username/password is `admin`/`admin`: http://localhost:8080/admin/
Basic configuration
------------------------------------------------------------------------------
.. code-block:: python
# https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis
REDIS_SERVERS = dict(
localhost=dict(),
)
Explicit configuration
------------------------------------------------------------------------------
.. code-block:: python
# https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis
REDIS_SERVERS = dict(
redis_server_a=dict(host='127.0.0.1', port=6379, db=0),
)
Master slave configuration
------------------------------------------------------------------------------
.. code-block:: python
# https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis
REDIS_SERVERS = dict(
redis_server_a=dict(
master=dict(host='master_hostname', port=6379, db=0),
slave=dict(host='slave_hostname', port=6379, db=0),
)
)
Sentinel Configuration
------------------------------------------------------------------------------
.. code-block:: python
# The `REDIS_SENTINELS` setting should be a list containing host/port
# combinations. As documented here:
# https://github.com/andymccurdy/redis-py/blob/master/README.rst#sentinel-support
REDIS_SENTINELS = [('server_a', 26379), ('server_b', 26379)]
# The `REDIS_SENTINEL_OPTIONS` are the extra arguments to
# `redis.sentinel.Sentinel`:
# https://github.com/andymccurdy/redis-py/blob/cdfe2befbe00db4a3c48c9ddd6d64dea15f6f0db/redis/sentinel.py#L128-L155
REDIS_SENTINEL_OPTIONS = dict(socket_timeout=0.1)
# The `service_name` is used to find the server within the Sentinel
# configuration. The dictionary key will be used as the name in the admin
# https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis
REDIS_SERVERS = dict(
name_in_admin=dict(service_name='name_in_sentinel'),
other_server=dict(service_name='other_server'),
)
Base64 and/or JSON decoding
------------------------------------------------------------------------------
As a convenient option all values can optionally be `base64` and/or `json`
encoded. To configure this a regular expression can be specified which will be
matched against the keys.
.. code-block:: python
# For all keys
REDIS_JSON_KEY_RE = '.*'
REDIS_BASE64_KEY_RE = '.*'
# Keys starting with a pattern:
REDIS_BASE64_KEY_RE = '^some_prefix.*'
# Keys ending with a pattern:
REDIS_JSON_KEY_RE = '.*some_suffix$'
And if a specific `json` decoder is needed, the `json` module can be specified.
The module needs to be importable and have a `dumps` and `loads` method. By
default it simply imports the `json` module:
.. code-block:: python
REDIS_JSON_MODULE = 'json'
Representation cropping
------------------------------------------------------------------------------
Within the Django Admin list view the values are cropped by default to prevent really long lines. This size can be adjusted through:
.. code-block:: python
REDIS_REPR_CROP_SIZE = 150
TODO
==============================================================================
- Allow saving values
- Allow deleting values
- Support Redis Bitmaps
- Support Redis HyperLogLogs
Raw data
{
"_id": null,
"home_page": "https://github.com/WoLpH/django-redis-admin",
"name": "django-redis-admin",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "Django Redis Admin",
"author": "Rick van Hattem (Wolph)",
"author_email": "wolph@wol.ph",
"download_url": "https://files.pythonhosted.org/packages/4e/b6/f0e2b392fba662aca4d983b17f1727749a4958154e00421e006a4cf1b8a0/django-redis-admin-0.3.0.tar.gz",
"platform": null,
"description": "==============================================================================\nDjango Redis Admin\n==============================================================================\n\n.. Travis status:\n \n .. image:: https://travis-ci.org/WoLpH/django-redis-admin.svg?branch=master\n :target: https://travis-ci.org/WoLpH/django-redis-admin\n\nIntroduction\n==============================================================================\n\nWith `django-redis-admin` you can view (and in the future, edit) your Redis \ndatabases. It supports simple servers, master slave setups and sentinel setups.\n\nThe admin works by creating a `RedisQueryset` which fakes Django models and \nquerysets so the `ModelAdmin` thinks it's using a regular database backed model.\n\nSince Redis only supports basic types the library allows for optional `base64`\nencoding/decoding and `json` encoding/decoding.\n\nWhile I would not recommend using it as a regular queryset to access Redis. In\naddition to querying data it does some extra queries which you usually don't\nneed (such as fetching idle data) and it does some automatic conversion steps.\n\nRequirements\n==============================================================================\n\n* Python `3.6` and above\n* Django (tested with 2.1, probably works with any version that supports\n Python 3)\n* Python-redis (`pip install redis`)\n\nInstallation\n==============================================================================\n\n`django-redis-admin` can be installed via pip.\n\n.. code-block:: bash\n\n pip install django-redis-admin\n\nThen just add `redis_admin` to your `INSTALLED_APPS`.\n\nOptionally, configure your servers if you have multiple and/or non-standard \n(i.e. non-localhost) redis servers.\n\nBelow are several example configurations. The default settings can always be\nfound in `redis_admin/settings.py`\n\nYou can run the demo project using the following commands:\n\n.. code-block:: bash\n\n cd test_redis_admin\n python manage.py runserver\n\nThe default username/password is `admin`/`admin`: http://localhost:8080/admin/\n\nBasic configuration\n------------------------------------------------------------------------------\n\n.. code-block:: python\n\n # https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis\n REDIS_SERVERS = dict(\n localhost=dict(),\n )\n\nExplicit configuration\n------------------------------------------------------------------------------\n\n.. code-block:: python\n\n # https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis\n REDIS_SERVERS = dict(\n redis_server_a=dict(host='127.0.0.1', port=6379, db=0),\n )\n\nMaster slave configuration\n------------------------------------------------------------------------------\n\n.. code-block:: python\n\n # https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis\n REDIS_SERVERS = dict(\n redis_server_a=dict(\n \t master=dict(host='master_hostname', port=6379, db=0),\n \t slave=dict(host='slave_hostname', port=6379, db=0),\n )\n )\n\nSentinel Configuration\n------------------------------------------------------------------------------\n\n.. code-block:: python\n\n # The `REDIS_SENTINELS` setting should be a list containing host/port\n # combinations. As documented here:\n # https://github.com/andymccurdy/redis-py/blob/master/README.rst#sentinel-support\n REDIS_SENTINELS = [('server_a', 26379), ('server_b', 26379)]\n\n # The `REDIS_SENTINEL_OPTIONS` are the extra arguments to\n # `redis.sentinel.Sentinel`:\n # https://github.com/andymccurdy/redis-py/blob/cdfe2befbe00db4a3c48c9ddd6d64dea15f6f0db/redis/sentinel.py#L128-L155\n REDIS_SENTINEL_OPTIONS = dict(socket_timeout=0.1)\n\n # The `service_name` is used to find the server within the Sentinel\n # configuration. The dictionary key will be used as the name in the admin\n # https://redis-py.readthedocs.io/en/latest/index.html#redis.Redis\n REDIS_SERVERS = dict(\n name_in_admin=dict(service_name='name_in_sentinel'),\n other_server=dict(service_name='other_server'),\n )\n\nBase64 and/or JSON decoding\n------------------------------------------------------------------------------\n\nAs a convenient option all values can optionally be `base64` and/or `json`\nencoded. To configure this a regular expression can be specified which will be\nmatched against the keys.\n\n.. code-block:: python\n\n # For all keys\n REDIS_JSON_KEY_RE = '.*'\n REDIS_BASE64_KEY_RE = '.*'\n\n # Keys starting with a pattern:\n REDIS_BASE64_KEY_RE = '^some_prefix.*'\n\n # Keys ending with a pattern:\n REDIS_JSON_KEY_RE = '.*some_suffix$'\n\nAnd if a specific `json` decoder is needed, the `json` module can be specified.\nThe module needs to be importable and have a `dumps` and `loads` method. By\ndefault it simply imports the `json` module:\n\n.. code-block:: python\n\n REDIS_JSON_MODULE = 'json'\n\nRepresentation cropping\n------------------------------------------------------------------------------\n\nWithin the Django Admin list view the values are cropped by default to prevent really long lines. This size can be adjusted through:\n\n.. code-block:: python\n\n REDIS_REPR_CROP_SIZE = 150\n\nTODO\n==============================================================================\n\n- Allow saving values\n- Allow deleting values\n- Support Redis Bitmaps\n- Support Redis HyperLogLogs\n\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "A Django Admin interface for Redis servers with optional Redis Sentinel support",
"version": "0.3.0",
"project_urls": {
"Homepage": "https://github.com/WoLpH/django-redis-admin"
},
"split_keywords": [
"django",
"redis",
"admin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "57aff41424fa4b0534184c611e304aa5ebd0c86f7f7116a48713f0626e30f350",
"md5": "48bbffb9aa9c27cac2593acdce2103cd",
"sha256": "d4752f9a279f1203d92355919e5276d47b11349dad54570ec88bdc4a96b28e6d"
},
"downloads": -1,
"filename": "django_redis_admin-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "48bbffb9aa9c27cac2593acdce2103cd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 12659,
"upload_time": "2023-08-21T01:41:24",
"upload_time_iso_8601": "2023-08-21T01:41:24.987780Z",
"url": "https://files.pythonhosted.org/packages/57/af/f41424fa4b0534184c611e304aa5ebd0c86f7f7116a48713f0626e30f350/django_redis_admin-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4eb6f0e2b392fba662aca4d983b17f1727749a4958154e00421e006a4cf1b8a0",
"md5": "39fa8b7abbf345b83a8ea9234d42ff1b",
"sha256": "e49048c315ee8e054e906bd5644d30f32039b1de79f5221044e0903ab24f121f"
},
"downloads": -1,
"filename": "django-redis-admin-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "39fa8b7abbf345b83a8ea9234d42ff1b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10806,
"upload_time": "2023-08-21T01:41:26",
"upload_time_iso_8601": "2023-08-21T01:41:26.663122Z",
"url": "https://files.pythonhosted.org/packages/4e/b6/f0e2b392fba662aca4d983b17f1727749a4958154e00421e006a4cf1b8a0/django-redis-admin-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-21 01:41:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "WoLpH",
"github_project": "django-redis-admin",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "django-redis-admin"
}