四:DRF項目開發的準備

一: 虛擬環境virtualenv

若是在一臺電腦上, 想開發多個不一樣的項目, 須要用到同一個包的不一樣版本, 若是使用上面的命令, 在同一個目錄下安裝或者更新, 新版本會覆蓋之前的版本, 其它的項目就沒法運行了.而公司裏面每每會存在多個項目的狀況,因此須要使用虛擬環境,把當前項目所須要用到的模塊及其版本進行隔離包裝到一個虛擬環境中使用。css

1 安裝前端

pip install virtualenv             
pip install virtualenv-clone       
pip install virtualenvwrapper      
pip install virtualenvwrapper-win
# 注意以上命令適用於window系統

2 經常使用命令

建立虛擬環境:                mkvirtualenv 虛擬環境名稱
建立虛擬環境(指定python版本): mkvirtualenv -p python 虛擬環境名稱
查看全部虛擬環境:            workon+2次tab鍵
使用虛擬環境:               workon 虛擬環境名稱
退出虛擬環境:               deactivate
刪除虛擬環境(必須先退出虛擬環境內部才能刪除當前虛擬環境): rmvirtualenv 虛擬環境名稱
其餘相關命令:
查看虛擬環境中安裝的包:              pip freeze  或者 pip list
收集當前環境中安裝的包及其版本:       pip freeze > requirements.txt
在部署項目的服務器中安裝項目使用的模塊: pip install -r requirements.txt
提示:
虛擬環境只會管理環境內部的模塊和python解析器,對於源代碼是毫無關係
建立虛擬環境須要聯網
建立成功後, 會自動工做在這個虛擬環境上
工做在虛擬環境上, 提示符最前面會出現 「(虛擬環境名稱)」

二 企業項目開發流程

企業的web項目類型:
商城
門戶網站[企業站和門戶站]
社交網絡
資訊論壇
內部系統
我的博客
內容收費站
前端的靜態頁面製做,外界開發的時候,是照着psd/png設計稿進行切圖佈局

1需求分析

首頁
導航信息/輪播圖片/購物車/登陸判斷
免費課
課程分類/篩選條件/
免費課詳情頁
視頻播放/課程章節/學生評論/倒計時/添加商品到購物車/
登陸
帳號登陸
多條件登陸
極驗驗證碼接口
忘記密碼
保存密碼
短信登陸
發送短信接口[ 容聯雲短信接口 ]
短信冷卻倒計時
免費試學
購物車
購物車中課程的關聯和核算功能
優惠券管理
個人貝里[積分]
支付寶功能的接入
生成訂單[訂單號\訂單價格\訂單商品標題]
購買成功頁面
從支付寶服務器上面獲取訂單狀態
後臺管理 xadmin

2 項目架構

項目採用先後端分離的應用模式
前端使用Vue.js vue-cli
後端使用Django REST framework

三 搭建DRF項目vue

1 進入虛擬環境

workon luffy

2 安裝基本類庫

在以前虛擬環境luffy中安裝項目須要用到的類庫
pip install django
pip install PymySQL
pip install Pillow
pip install djangorestframework

3 建立django項目需在虛擬環境下執行

django-admin startproject luffy  

效果:java

     

 

4 在pycharm中打開項目

提示:
在pycharm中若是要使用已經建立好的虛擬環境,則必須設置pycharm中的python解釋器,設置爲
虛擬環境中的python。
/.virtualenvs/環境名稱/Scripts/python.exe

 

訪問瀏覽器查看效果:python

四. 項目配置mysql

1 項目目錄調整

├── docs           # 項目相關資料保存目錄
├── logs           # 項目運行時/開發時日誌目錄
├── manage.py
├── luffy         # 開發時的代碼保存
│   ├── apps       # 開發者的代碼保存目錄,以模塊[子應用]爲目錄保存
│   ├── libs       # 第三方類庫的保存目錄
│   ├── settings.py
│   ├── urls.py
│   ├── utils      # 多個模塊[子應用]的公共函數類庫
└── scripts        # 保存項目運營時的腳本文件 

2 建立數據庫

create database luffycity default charset=utf8;
爲當前項目建立數據庫用戶[這個用戶只能看到這個數據庫]
create user moluo identified by '123456';
grant all privileges on luffycity.* to 'moluo'@'%';
flush privileges;

3 配置數據庫鏈接

#1 打開settings/dev.py文件,並配置

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "luffy_user",
        "PASSWORD": "luffy",
        "NAME": "luffycity",
    }
}
#2 在項目主模塊的 __init__.py中導入pymysql

import pymysql
​
pymysql.install_as_MySQLdb() 

4 日誌配置

在settings.py文件中追加以下配置:linux

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/luffy.log"),
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'propagate': True,
        },
    }
}

5 異常處理

新建utils/exceptions.pywebpack

from rest_framework.views import exception_handler
​
from django.db import DatabaseError
from rest_framework.response import Response
from rest_framework import status
​
import logging
logger = logging.getLogger('luffy')
​
​
def custom_exception_handler(exc, context):
    """
    自定義異常處理
    :param exc: 異常類
    :param context: 拋出異常的上下文
    :return: Response響應對象
    """
    # 調用drf框架原生的異常處理方法
    response = exception_handler(exc, context)
​
    if response is None:
        view = context['view']
        if isinstance(exc, DatabaseError):
            # 數據庫異常
            logger.error('[%s] %s' % (view, exc))
            response = Response({'message': '服務器內部錯誤'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)
​
    return response

#settings.py配置文件中添加

    REST_FRAMEWORK = {
    ...
  
    # 異常處理
    'EXCEPTION_HANDLER': 'luffy.utils.exceptions.custom_exception_handler',
}
 

 

安裝數據庫遇到的問題

1. 安裝了虛擬環境之後,沒法使用deactivate退出環境,而且使用pip list輸出的當前環境模塊是全局環境中的.

問題出現的緣由: 當前系統中,登陸用戶的家目錄是中文的!ios

防範相似的問題出現: ​ 安裝的軟件\項目開發使用到的路徑\開發相關的目錄不要涉及到中文git

解決方案:1. 在當前電腦中,配置環境變量中添加一個配置虛擬環境存儲目錄的變量

數據建立的帳號沒法登錄,原來的root帳號沒有問題,建立帳號的sql語句沒有問題.

  1. 錯誤發生的緣由:   在安裝mysql的時候,沒有進行初始化[沒有刪除匿名用戶]

    防範出現這個問題:   之後安裝了mysql之後,進入到mysql的控制檯,找到mysql數據庫的user表,把user=''的用戶刪除

  2. delete from mysql.user where user=''
    注意,若是在刪除匿名用戶以前已經建立的用戶,這些用戶是沒法登錄,這些用戶也須要刪除
    刪除了用戶之後,還要從權限中移除上面帳號的相關權限記錄
    drop user '沒法登錄的用戶名';    # 匿名用戶無需進行這項操做
    flush privileges;             # 刷新mysql的權限記錄,保證上面更改立馬刷新
    解決方案:
    
    同上面的防範措施一致.
    

      

 

 

五: 如何多人協同開發同一個項目?

使用代碼版本控制[version control]軟件,
目前市面上比較流行的代碼版本控制器有: git,svn,csv

1. 使用git管理代碼版本

本項目使用git管理項目代碼,代碼庫放在gitee碼雲平臺。(注意,公司中一般放在gitlab私有服務器中)
 1 Git 的誕生:
2005 年 4 月3 日,Git 是目前世界上最早進的分佈式版本控制系統(沒有之一)
做用:源代碼管理
爲何要進行源代碼管理?
方便多人協同開發
方便版本控制

2 git與svn區別

SVN 都是集中控制管理的,也就是有一箇中央服務器,你們都把代碼提交到中央服務器,而 git 是分佈式的版本控制工具,也就是說沒有中央服務器,每一個節點的地位平等。

SVN

            

Git

          

 

3 Git的windows下安裝

官網地址:

https://git-scm.com/download

             

下載到本地磁盤

            

安裝

                 

 

一路【next】就能夠了

             

            

注意:openssl 必定選它

安裝完成後,右擊菜單欄,有以下菜單,表示安裝完成

                 

進入git bash選項

                    

 

Git工做區、暫存區和版本庫

             

1)、工做區介紹

就是在你本要電腦磁盤上能看到的目錄。

2)、暫存區介紹

通常存放在【.git】目錄下的index文件(.git/index) 中,因此咱們把暫存區有時也叫做索引。

3)、版本庫介紹

工做區有一個隱藏目錄.git,這個不算工做區,而是Git的版本庫。git中的head/master是分支,是版本庫。

git服務器本地搭建

cd進入到本身但願存儲代碼的目錄路徑,並建立本地倉庫.git
新建立的本地倉庫.git是個空倉庫
  cd 目錄路徑
  git init
建立倉庫

配置用戶名和郵箱

git config --global user.name 'lisi'
git config --global user.email 'lisi@163.com'

查看倉庫狀態

git status
git status –s 簡約顯示
紅色表示新建文件或者新修改的文件,都在工做區.
綠色表示文件在暫存區
新建的login.py文件在工做區,須要添加到暫存區並提交到倉庫區
上圖表示: 暫時沒有新文件須要提交到暫存區

添加文件到暫存區

  # 添加項目中全部文件
  git add .
  或者
  # 添加指定文件
  git add login.py
例如: 建立3個文件 ,並查看狀態.

提交到版本庫

 git commit -am "版本描述"

手動刪除文件

手動操做刪除 或者 在命令行下 使用 rm 文件名 刪除 都是表示在工做區刪除.
對於這種刪除,若是還原,則可使用 git checkout 文件名

版本刪除

若是使用 git rm 文件名, 這種操做屬於暫存區刪除,這種刪除沒法直接git checkout 文件名 來還原.
若是直接執行git checkout 命令,則報錯以下:
若是要還原在暫存區中刪除的文件,必須先執行 git reset head

查看歷史版本[查看日誌]

git log   或者   git reflog
過濾查看日誌
  git log –p 
  退出按【q】鍵
  ctrl+f向下分頁
  ctrl+b 向上分頁
顯示指定日期以後的日誌   git log --after  '2018-11-6'
顯示指定日期以前的日誌   git log --before '2018-11-6'
指定顯示指定開發者的日誌  git log --author 'lisi' 

回退版本

  • 方案一:

HEAD表示當前最新版本
HEAD^表示當前最新版本的前一個版本
HEAD^^表示當前最新版本的前兩個版本,以此類推...
HEAD~1表示當前最新版本的前一個版本
HEAD~10表示當前最新版本的前10個版本,以此類推...
git reset --hard HEAD^

方案二:當版本很是多時可選擇的方案

經過每一個版本的版本號回退到指定版本
  git reset --hard 版本號
取消暫存
git reset head
git reset <file> :從暫存區恢復到工做文件
git reset -- :從暫存區恢復到工做文件

4 查看文件狀態

針對與文件所處的不一樣分區,文件所處的狀態:
(1)未追蹤, 文件第一次出如今工做區, 版本庫尚未存儲該文件的狀態
(2)已追蹤, 只要第一次,git add了文件, 文件就是已追蹤
(3)未修改, 文件在工做區未被編輯
(4)已修改, 文件在工做區被修改
(5)未暫存, 文件已修改, 可是沒有add到暫存區
(6)已暫存, 已經將修改的文件add到暫存區
(7)未提交, 已暫存的文件, 沒有commit提交. 處於暫存區
(8)已提交, 提交到版本庫的文件修改,只有commit之後纔會有倉庫的版本號生成
注意:
公司通常使用git管理項目,每每會搭建一個gitlab本身內部管理代碼,也有公司選擇使用碼雲的企業版倉庫來管理
使用git開發項目時,有時候不必定經過https協議提交代碼的。也有的公司是經過ssh協議提交,此時須要生成ssh公鑰和提交公鑰給倉庫。[碼雲這些官網都會有詳細的提示說明]
生成SSH公鑰【必須安裝git bash纔可使用這個命令,並且還要把git bash添加到系統變量裏面】
  ssh-keygen -t rsa -C "lisi@163.com"
參考:https://gitee.com/help/articles/4180

5. 在git平臺建立工程

1) 建立私有項目庫

            

建立私有空倉庫之後的界面:

             

2)克隆項目到本地

git clone 倉庫地址
注意,若是當前目錄下出現git倉庫同名目錄時,會克隆失敗。

3)建立並切換分支到dev

# git branch dev      # 建立本地分支dev,dev是自定義
# git checkout dev    # 切換本地分支代碼
git checkout -b dev   # 這裏是上面兩句代碼的簡寫

git提交

git add 代碼目錄
git status
git commit -m '添加項目代碼'

推送到遠端

git push origin dev:dev

若是推送代碼,出現如下提示: git pull ....,則表示當前本地的代碼和線上的代碼版本不一樣.

1. 把線上的代碼執行如下命令,拉取到本地,進行同步
git pull
2. 根據提示,移除多餘的衝突的文件,也能夠刪除.
完成這些步驟之後,再次add,commit,push便可.

六. 搭建前端項目

1 建立項目目錄

cd 項目目錄
vue init webpack lufei

例如,我要把項目保存在D:/moluo的根目錄下,能夠以下操做:

D:
cd /moluo
vue init webpack lufei

根據須要在生成項目時,咱們選擇對應的選項, 效果:

             

根據上面的提示,咱們已經把vue項目構建好了,接下來咱們能夠在pycharm編輯器中把項目打開並根據上面黃色提示,運行測試服務器。

            

打開項目已經,在pycharm的終端下運行vue項目,查看效果。

npm run dev

接下來,咱們根據終端上效果顯示的對應地址來訪問項目(若是有多個vue項目在運行,8080端口被佔據了,服務器會自動改端口,因此根據本身實際在操做中看到的地址來訪問。)

訪問:http://localost:8080

 

2 初始化前端項目

清除默認的HelloWorld組件和APP.vue中的默認樣式

接下來,咱們能夠查看效果了,一張白紙~

3 安裝路由vue-router

1) 下載路由組件

npm i vue-router -S

2) 配置路由

  1 初始化路由對象

在src目錄下建立routers路由目錄,在routers目錄下建立index.js路由文件

index.js路由文件中,編寫初始化路由對象的代碼 .

import Vue from "vue"
import Router from "vue-router"
​
// 這裏導入可讓讓用戶訪問的組件
​
Vue.use(Router);
​
export default new Router({
  // 設置路由模式爲‘history’,去掉默認的#
  mode: "history",
  routes:[
    // 路由列表
​
  ]
})
 2 註冊路由信息

打開main.js文件,把router對象註冊到vue中.

代碼:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './routers/index';
​
Vue.config.productionTip = false
​
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
});

  3 在視圖中顯示路由對應的內容

在App.vue組件中,添加顯示路由對應的內容。

代碼:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>
​
<script>
export default {
  name: 'App',
  components: {
​
  }
}
</script>
​
<style>
​
</style>
​

 

4 引入ElementUI

npm i element-ui -S
上面的命令等同於 npm install element-ui --save

  

1) 配置ElementUI到項目中

在main.js中導入ElementUI,並調用。

代碼:

// elementUI 導入
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// 調用插件
Vue.use(ElementUI);

成功引入了ElementUI之後,接下來咱們就能夠開始進入前端頁面開發,首先是首頁。

接下來咱們把以前完成的首頁,直接拿過來使用[注意除了組件之外,還有靜態文件也須要拿過來,包括App.vue裏面的公共樣式],並運行項目。

 

4. 跨域CORS

咱們如今爲前端和後端分別設置兩個不一樣的域名

window 系統: C:\Windows\System32\drivers\etc\host

linux/mac系統: /etc/hosts

位置 域名
前端 www.luffycity.cn
後端 api.luffycity.cn

編輯/etc/hosts文件,能夠設置本地域名

在文件中增長兩條信息

127.0.0.1   api.luffycity.cn
127.0.0.1   www.luffycity.cn

經過瀏覽器訪問drf項目,會出現如下錯誤信息

能夠經過settings的ALLOWED_HOSTS,設置容許訪問

# 設置哪些客戶端能夠經過地址訪問到後端
ALLOWED_HOSTS = [
    'api.luffycity.cn',
    'www.luffycity.cn',
    'localhost',  # 實際開發的時候不會寫上localhost和127.0.0.1的
    '127.0.0.1',
]

如今,前端與後端分處不一樣的域名,咱們須要爲後端添加跨域訪問的支持。

不然前端沒法使用axios沒法請求後端提供的api數據

咱們使用CORS來解決後端對跨域訪問的支持。

使用django-cors-headers擴展

在 Response(headers={"Access-Control-Allow-Origin":'客戶端地址/*'})

文檔

安裝

pip install django-cors-headers 

添加應用

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

中間層設置【必須寫在第一個位置】

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

添加白名單

# CORS組的配置信息
CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8080',
    'localhost:8080',
    'www.luffycity.cn:8080'
)
CORS_ALLOW_CREDENTIALS = True  # 容許ajax跨域請求時攜帶cookie

完成了上面的步驟,咱們就能夠經過後端提供數據給前端使用ajax訪問了。

七. redis

window系統的redis是微軟團隊根據官方的linux版本高仿的

官方原版: https://redis.io/

中文官網:http://www.redis.cn

1 redis下載和安裝

下載地址: https://github.com/MicrosoftArchive/redis/releases

使用如下命令啓動redis服務端

redis-server C:/tool/redis/redis.windows.conf

關閉上面這個cmd窗口就關閉redis服務器服務了。

redis做爲windows服務啓動方式

redis-server --service-install redis.windows.conf

啓動服務:redis-server --service-start 中止服務:redis-server --service-stop

啓動內置客戶端鏈接redis服務:

2 redis的使用

redis 安裝成功之後,window下的配置文件保存在軟件 安裝目錄下,若是是mac或者linux,則默認安裝/etc/redis/redis.conf

1) redis的核心配置選項

  • 綁定ip:若是須要遠程訪問,可將此⾏註釋,或綁定⼀個真實ip

    bind 127.0.0.1

  • 端⼝,默認爲6379

    port 6379

  • 是否以守護進程運⾏[這裏的配置主要是linux和mac下面須要配置的]

    • 若是以守護進程運⾏,則不會在命令⾏阻塞,相似於服務

    • 若是以⾮守護進程運⾏,則當前終端被阻塞

    • 設置爲yes表示守護進程,設置爲no表示⾮守護進程

    • 推薦設置爲yes

    daemonize yes

  • 數據⽂件

    dbfilename dump.rdb

  • 數據⽂件存儲路徑

    dir .

  • ⽇志⽂件

    logfile "C:/tool/redis/redis-server.log"

  • 數據庫,默認有16個

    database 16

  • 主從複製,相似於雙機備份。

    slaveof

 

3 Redis

Redis 是一個高性能的key-value數據格式的內存緩存,NoSQL數據庫。
NOSQL:not only sql,泛指非關係型數據庫。
關係型數據庫: (mysql, oracle, sql server, sqlite)
1. 數據存放在表中,表之間有關係。
2. 通用的SQL操做語言。
3. 大部分支持事務。
非關係型數據庫[ redis,hadoop,mangoDB]:
1. 沒有數據表的概念,不一樣的nosql數據庫存放數據位置不一樣。
2. nosql數據庫沒有通用的操做語言。
3. 基本不支持事務。   redis支持簡單事務
redis: 內存型(數據存放在內存中)的非關係型(nosql)key-value(鍵值存儲)數據庫, 支持數據的持久化(注: 數據持久化時將數據存放到文件中,每次啓動redis以後會先將文 件中數據加載到內存),常常用來作緩存(用來緩存一些常常用到的數據,提升讀寫速度)。
redis是一款基於CS架構的數據庫,因此redis有客戶端,也有服務端。
其中,客戶端可使用python等編程語言,也能夠終端命令行工具
redis客戶端鏈接服務器:
redis-cli -h `redis服務器ip` -p `redis服務器port`

3 redis數據類型

1. string類型:
    字符串類型是 Redis 中最爲基礎的數據存儲類型,它在 Redis 中是二進制安全的,也就是byte類型
    最大容量是512M。
2. hash類型:
        hash用於存儲對象,對象的結構爲屬性、值,值的類型爲string。
        key:{
            域:值,
            域:值,            
            域:值,
            域:值,
            ...
        }
3. list類型:
        列表的元素類型爲string。
        key:[ 值1,值2,值3..... ]
4. set類型:
    無序集合,元素爲string類型,元素惟一不重複,沒有修改操做。
5. zset類型:
    有序集合,元素爲string類型,元素惟一不重複,沒有修改操做。

1) string

若是設置的鍵不存在則爲添加,若是設置的鍵已經存在則修改

  • 設置鍵值

    set key value

  • 例1:設置鍵爲name值爲xiaoming的數據

    set name xiaoming

 

  • 設置鍵值及過時時間,以秒爲單位

    setex key seconds value

  • 例2:設置鍵爲aa值爲aa過時時間爲3秒的數據

    setex aa 3 aa

 

關於設置保存數據的有效期

# setex 添加保存數據到redis,同時設置有效期
格式:
    setex key time value
# expire 給已有的數據從新設置有效期
格式:
    expire key time
  • 設置多個鍵值

    mset key1 value1 key2 value2 ...

  • 例3:設置鍵爲a1值爲python、鍵爲a2值爲java、鍵爲a3值爲c

    mset a1 python a2 java a3 c

  • 追加值

    append key value

  • 例4:向鍵爲a1中追加值haha

    append a1 haha

  • 獲取:根據鍵獲取值,若是不存在此鍵則返回nil

    get key

  • 例5:獲取鍵name的值

    get name

  • 根據多個鍵獲取多個值

    mget key1 key2 ...

  • 例6:獲取鍵a一、a二、a3的值

    mget a1 a2 a3

 

2) 鍵操做

  • 查找鍵,參數⽀持正則表達式

    keys pattern

  • 例1:查看全部鍵

    keys *

  • 例2:查看名稱中包含a的鍵

    keys a*

  • 判斷鍵是否存在,若是存在返回1,不存在返回0

    exists key1

  • 例3:判斷鍵a1是否存在

    exists a1

  • 查看鍵對應的value的類型

    type key

  • 例4:查看鍵a1的值類型,爲redis⽀持的五種類型中的⼀種

    type a1

  • 刪除鍵及對應的值

    del key1 key2 ...

  • 例5:刪除鍵a二、a3

    del a2 a3

  • 設置過時時間,以秒爲單位

  • 若是沒有指定過時時間則⼀直存在,直到使⽤DEL移除

    expire key seconds

  • 例6:設置鍵a1的過時時間爲3秒

    expire a1 3

  • 查看有效時間,以秒爲單位

    ttl key

  • 例7:查看鍵bb的有效時間

    ttl bb

 

3) hash

  • 設置單個屬性

    hset key field value

  • 例1:設置鍵 user的屬性namexiaohong

    hset user name xiaohong

  • 設置多個屬性

    hmset key field1 value1 field2 value2 ...

  • 例2:設置鍵u2的屬性namexiaohong、屬性age11

    hmset u2 name xiaohongage 11

  • 獲取指定鍵全部的屬性

    hkeys key

  • 例3:獲取鍵u2的全部屬性

    hkeys u2

  • 獲取⼀個屬性的值

    hget key field

  • 例4:獲取鍵u2屬性name的值

    hget u2 name

  • 獲取多個屬性的值

    hmget key field1 field2 ...

  • 例5:獲取鍵u2屬性nameage的值

    hmget u2 name age

  • 獲取全部屬性的值

    hvals key

  • 例6:獲取鍵u2全部屬性的值

    hvals u2

  • 刪除屬性,屬性對應的值會被⼀起刪除

    hdel key field1 field2 ...

  • 例7:刪除鍵u2的屬性age

    hdel u2 age

4) list

列表的元素類型爲string

按照插⼊順序排序

  • 在左側插⼊數據

    lpush key value1 value2 ...

  • 例1:從鍵爲a1的列表左側加⼊數據a 、 b 、c

    lpush a1 a b c

  • 在右側插⼊數據

    rpush key value1 value2 ...

  • 例2:從鍵爲a1的列表右側加⼊數據0、1

    rpush a1 0 1

  • 在指定元素的前或後插⼊新元素

    linsert key before或after 現有元素 新元素

  • 例3:在鍵爲a1的列表中元素b前加⼊3

    linsert a1 before b 3

設置指定索引位置的元素值

  • 索引從左側開始,第⼀個元素爲0

  • 索引能夠是負數,表示尾部開始計數,如-1表示最後⼀個元素

    lset key index value

  • 例5:修改鍵爲a1的列表中下標爲1的元素值爲z

    lset a 1 z

 

  • 刪除指定元素

    • 將列表中前count次出現的值爲value的元素移除

    • count > 0: 從頭往尾移除

    • count < 0: 從尾往頭移除

    • count = 0: 移除全部

    lrem key count value

  • 例6.1:向列表a2中加⼊元素a、b、a、b、a、b

    lpush a2 a b a b a b

 

  • 例6.2:從a2列表右側開始刪除2個b

    lrem a2 -2 b

  • 例6.3:查看列表a2的全部元素

    lrange a2 0 -1

 

5) set

  • 添加元素

    sadd key member1 member2 ...

  • 例1:向鍵a3的集合中添加元素zhangsanlisiwangwu

    sadd a3 zhangsan sili wangwu

 

  • 返回全部的元素

    smembers key

  • 例2:獲取鍵a3的集合中全部元素

    smembers a3

 

  • 刪除指定元素

    srem key

  • 例3:刪除鍵a3的集合中元素wangwu

    srem a3 wangwu

7) 關於redis的幾個站點地址

中文官網: http://www.redis.cn/

英文官網:https://redis.io

參考命令:http://doc.redisfans.com/

針對redis中的內容擴展
flushall 清空當前數據庫中的全部數據

針對各類數據類型它們的特性,使用場景以下:
字符串string: 用於保存一些項目中的普通數據,只要鍵值對的均可以保存,例如,保存 session,定時記錄狀態
哈希hash:用於保存項目中的一些字典數據,可是不能保存多維的字典,例如,商城的購物車
列表list:用於保存項目中的列表數據,可是也不能保存多維的列表,例如,隊列,秒殺,醫院的掛號
無序集合set:用於保存項目中的一些不能重複的數據,能夠用於過濾,例如,投票海選的時候,過濾候選人
有序集合zset:用於保存項目中一些不能重複,可是須要進行排序的數據,分數排行榜.
相關文章
相關標籤/搜索