使用Redis存储Session
会话还支持文件、纯cookie、Memcached、Redis等方式存储,下面演示使用redis存储。
1)安装包。
pip3 install django-redis-sessions
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REdis_HOST = 'localhost'
SESSION_REdis_PORT = 6379
SESSION_REdis_DB = 2
SESSION_REdis_PASSWORD = ''
SESSION_REdis_PREFIX = 'session'
def session_test(request):
request.session['h1']='hello'
return HttpResponse('ok')
4)浏览器访问该视图,在redis客户端中查看数据如下。
[root@server01 ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> KEYS *
1) "rpxw80y4cn72wmxfpp0hyc2x5xmnek02"
127.0.0.1:6379> get rpxw80y4cn72wmxfpp0hyc2x5xmnek02
"Y2YxYjg0ZDAzNjMwZGZjYzljZmJlNGFlNGY5YjY2MzJiNzZhZWVlZTp7ImgxIjoiaGVsbG8ifQ=="
127.0.0.1:6379>
此时session数据已经自动存储在redis中,查询一下MysqL看看有无存储数据,如下:
MysqL> select * from django_session;
Empty set (0.00 sec)
MysqL>
数据已经没有存储在MysqL了。
复制值,在Base64解码中进行解码查看如下图。
[root@server01 ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> KEYS *
1) "rpxw80y4cn72wmxfpp0hyc2x5xmnek02"
127.0.0.1:6379> ttl rpxw80y4cn72wmxfpp0hyc2x5xmnek02
(integer) 1166161
127.0.0.1:6379>
设置session的过期时间
session默认过期时间是两周,那么现在来设置一周来看看。代码如下:
def session_test(request):
request.session['h1']='hello'
request.session.set_expiry(value=7*24*3600) # 一周的过期时间
return HttpResponse('ok')
使用浏览器访问视图,如下:
而redis存储的值也改变,如下:
127.0.0.1:6379> ttl rpxw80y4cn72wmxfpp0hyc2x5xmnek02
(integer) 604733
127.0.0.1:6379>
redis存储的就是 7*24*3600 = 604800 秒。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。