David Foie Gras
David Foie Gras

Reputation: 2070

django-redis invalid DB index error and redis url's meaning

I'm using django-redis: https://niwinz.github.io/django-redis/latest/

While setting and testing cache, I have a question.

From this: https://niwinz.github.io/django-redis/latest/#_installation

There is code like this:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

When I use this unchanging any of this LOCATION code as: "LOCATION": "redis://127.0.0.1:6379/1", It is doing well. Even "LOCATION": "redis://127.0.0.1:6379/2" It seems to do works well.

But If I change this like "LOCATION": "redis://127.0.0.1:6379/220",

It returns invalid DB index error.

Question:

  1. Why this happened?

  2. What does parameter mean from "LOCATION": "redis://127.0.0.1:6379/parameter"?

Here is traceback:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/test/

Django Version: 2.0.2
Python Version: 3.6.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'post',
 'website']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.cache.UpdateCacheMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware']



Traceback:

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django_redis\cache.py" in _decorator
  32.             return method(self, *args, **kwargs)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django_redis\cache.py" in get
  81.                                    client=client)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django_redis\client\default.py" in get
  204.             raise ConnectionInterrupted(connection=client, parent=e)

During handling of the above exception (Redis ResponseError: invalid DB index), another exception occurred:

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django\core\handlers\exception.py" in inner
  35.             response = get_response(request)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django\utils\deprecation.py" in __call__
  93.             response = self.process_request(request)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django\middleware\cache.py" in process_request
  133.         cache_key = get_cache_key(request, self.key_prefix, 'GET', cache=self.cache)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django\utils\cache.py" in get_cache_key
  360.     headerlist = cache.get(cache_key)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django_redis\cache.py" in _decorator
  39.             raise e.parent

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\django_redis\client\default.py" in get
  202.             value = client.get(key)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\client.py" in get
  976.         return self.execute_command('GET', name)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\client.py" in execute_command
  667.             connection.send_command(*args)

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\connection.py" in send_command
  610.         self.send_packed_command(self.pack_command(*args))

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\connection.py" in send_packed_command
  585.             self.connect()

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\connection.py" in connect
  493.             self.on_connect()

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\connection.py" in on_connect
  567.             if nativestr(self.read_response()) != 'OK':

File "D:\pythonDev\interpreters\forMultichat\lib\site-packages\redis\connection.py" in read_response
  629.             raise response

Exception Type: ResponseError at /test/
Exception Value: invalid DB index

Upvotes: 2

Views: 2815

Answers (1)

Itamar Haber
Itamar Haber

Reputation: 49942

A Redis server, by default, is configured with 16 (0..15) shared databases. It is generally considered bad practice to use anything other than database 0.

Upvotes: 7

Related Questions