django_redis 生成这种会话密钥是正常的吗?
Is normal django_redis generate this kind of session key?
我是 django_redis 库的新手。我将此 confs 用于带有 redis 的会话存储:
...
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
"KEY_PREFIX": ""
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_CACHE_ALIAS = "default"
...
似乎一切正常。但是,当我检查数据库(默认 sqlite)上会话的密钥,然后将该密钥值与 redis-cli 中的 redis 数据库进行比较时,会话密钥是不同的。在 redis-cli 版本中,会话密钥有一个前缀,即使我没有设置前缀。
会话密钥的 DB (sqlite) 版本
skxn0oqp3goeipt6hnwvpeyp83hhoao0
redis-cli版本的key
127.0.0.1:6379[1]> keys *
1) ":1:django.contrib.sessions.cached_dbskxn0oqp3goeipt6hnwvpeyp83hhoao0"
127.0.0.1:6379[1]>
这正常吗?
session中的值table,顾名思义,就是一个session key,所以不需要记录任何额外的信息。
缓存中的值与缓存中的所有其他值并排放置,而不仅仅是其他会话密钥,因此必须对其进行适当的命名空间。在这种情况下,它记录:
- 这是哪个 Django 服务器(您没有使用的
KEY_PREFIX
)
- 这个缓存值的version number (
1
)
- 正在使用值的模块 (
django.contrib.sessions.cached_db
)
- 最后,实际会话密钥 (
skxn0oqp3goeipt6hnwvpeyp83hhoao0
)
最后两个是specified by the session backend itself. That key, the version, and the prefix are combined by make_key()
,可以被缓存后端覆盖
所以是的,这是正常的。
我是 django_redis 库的新手。我将此 confs 用于带有 redis 的会话存储:
...
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
"KEY_PREFIX": ""
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_CACHE_ALIAS = "default"
...
似乎一切正常。但是,当我检查数据库(默认 sqlite)上会话的密钥,然后将该密钥值与 redis-cli 中的 redis 数据库进行比较时,会话密钥是不同的。在 redis-cli 版本中,会话密钥有一个前缀,即使我没有设置前缀。
会话密钥的 DB (sqlite) 版本
skxn0oqp3goeipt6hnwvpeyp83hhoao0
redis-cli版本的key
127.0.0.1:6379[1]> keys *
1) ":1:django.contrib.sessions.cached_dbskxn0oqp3goeipt6hnwvpeyp83hhoao0"
127.0.0.1:6379[1]>
这正常吗?
session中的值table,顾名思义,就是一个session key,所以不需要记录任何额外的信息。
缓存中的值与缓存中的所有其他值并排放置,而不仅仅是其他会话密钥,因此必须对其进行适当的命名空间。在这种情况下,它记录:
- 这是哪个 Django 服务器(您没有使用的
KEY_PREFIX
) - 这个缓存值的version number (
1
) - 正在使用值的模块 (
django.contrib.sessions.cached_db
) - 最后,实际会话密钥 (
skxn0oqp3goeipt6hnwvpeyp83hhoao0
)
最后两个是specified by the session backend itself. That key, the version, and the prefix are combined by make_key()
,可以被缓存后端覆盖
所以是的,这是正常的。