1. 程式人生 > 實用技巧 >Django基礎013--redis開發

Django基礎013--redis開發

1.redis配置

在settings.py中加入以下程式碼塊,可支援多個redis的配置

 1 CACHES = {
 2     "default": {
 3         "BACKEND": "django_redis.cache.RedisCache",
 4         "LOCATION": "redis://127.0.0.1:6379/1",
 5         "OPTIONS": {
 6             "CLIENT_CLASS": "django_redis.client.DefaultClient",
 7             "CONNECTION_POOL_KWARGS
": {"max_connections": 100}, 8 # "PASSWORD": "dsx", # 密碼 9 # 這個redis是返回資料是bytes型別的,登入的時候user用pickle序列化的,存的是二進位制,取出來的也是二進位制 10 } 11 }, 12 "redis2": { 13 "BACKEND": "django_redis.cache.RedisCache", 14 "LOCATION": "redis://127.0.0.1:6379/2", 15 "
OPTIONS": { 16 "CLIENT_CLASS": "django_redis.client.DefaultClient", 17 "CONNECTION_POOL_KWARGS": {"max_connections": 100, 'decode_responses': True}, 18 # 這個redis配置,從redis裡面取到資料後會自動轉成字串,不是bytes型別 19 # "PASSWORD": "HK139bc&*", # 密碼 20 } 21 22 }
23 }

2.連線redis伺服器

#連線預設的redis
redis = django_redis.get_redis_connection()
#連線指定的redis
redis = django_redis.get_redis_connection('redis2')#建立redis連線

3.新增

 1 class Login(View):
 2     def post(self,request):
 3         '''
 4         1.驗證前端傳遞的值是否符合規則,forms
 5         2.登入成功後需要有標識,標識token存在redis
 6         :param request:
 7         :return:
 8         '''
 9         form_obj = forms.LoginForm(request.POST)
10         if form_obj.is_valid():
11             #資料驗證通過後,儲存token
12             #token生成規則:使用者名稱+時間戳,再md5加密
13             form_data = form_obj.cleaned_data
14             username = form_data.get('username')
15             user = form_data.get('user')
16             token = tools.md5('%s%s'%(username,time.time()))
17             redis = django_redis.get_redis_connection()#建立redis連線
18             redis.set(const.SESSION+token,pickle.dumps(user),const.EXIT_TIME)
19             return NbResponse(token=token,user=user.name,user_id=user.id)
20         else:
21             return NbResponse(-1,form_obj.error_formate)

4.獲取資料

redis = django_redis.get_redis_connection()
b_data = redis.get(const.SESSION+token)

5.刪除資料

redis = django_redis.get_redis_connection()
redis.delete(const.SESSION+request.token)