個人簡介
??個人主頁: 前端雜貨鋪
???♂?學(xué)習(xí)方向: 主攻前端方向,也會涉及到服務(wù)端
??個人狀態(tài): 在校大學(xué)生一枚,已拿多個前端 offer(秋招)
??未來打算: 為中國的工業(yè)軟件事業(yè)效力n年
??推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2&Vue3項目實戰(zhàn) ??Node.js
??個人推廣:每篇文章最下方都有加入方式,旨在交流學(xué)習(xí)&資源分享,快加入進(jìn)來吧
Node.js系列文章目錄
內(nèi)容 | 參考鏈接 |
---|---|
Node.js(一) | 初識 Node.js |
Node.js(二) | Node.js——開發(fā)博客項目之接口 |
Node.js(三) | Node.js——一文帶你開發(fā)博客項目(使用假數(shù)據(jù)處理) |
Node.js(四) | Node.js——開發(fā)博客項目之MySQL基礎(chǔ) |
Node.js(五) | Node.js——開發(fā)博客項目之API對接MySQL |
一、前言
登錄功能一般都是有 約定俗成的方法 的。
在這里我們使用 session 的方式 去實現(xiàn)登錄功能!
二、cookie、session、redis
1、cookie
- 存儲在瀏覽器的一段字符串(最大 4kb)
- 跨域不共享
- 格式如 k1=v1;k2=v2;k3=v3; 因此可以存儲結(jié)構(gòu)化數(shù)據(jù)
- 每次發(fā)送 http 請求,會將請求域的 cookie 一起發(fā)送給 server
- server 可以修改 cookie 并返回給瀏覽器
- 瀏覽器中也可以通過 JavaScript 修改 cookie(有限制)
2、session
- 單獨使用 cookie 會暴露 username,很危險
- 如何解決:cookie 中存儲 userid,server 端對應(yīng) username
- 解決方案:session,即 server 端存儲用戶信息
3、redis
- web server 最常用的緩存數(shù)據(jù)庫,數(shù)據(jù)存放在內(nèi)存中
- 相比于 mysql,訪問速度快(內(nèi)存和硬盤不是一個數(shù)量級的)
- 但成本更高,可存儲的數(shù)據(jù)量更?。▋?nèi)存的硬傷)
- 將 web server 和 redis 拆分為兩個單獨的服務(wù)
- 雙方都是獨立的,都是可擴(kuò)展的(例如都擴(kuò)展成集群)
- (包括 mysql,也是一個單獨的服務(wù),也可擴(kuò)展)
4、為什么 session 適合用 redis?
- session 訪問頻繁,對性能要求極高
- session 可不考慮斷電丟失數(shù)據(jù)的問題(內(nèi)存的硬傷)
- session 數(shù)據(jù)量不會很大(相對于 mysql 中存儲的數(shù)據(jù))
5、為何網(wǎng)站數(shù)據(jù)不適合用 redis?
- 操作頻率不是太高(相比于 session 操作)
- 斷電不能丟失,必須保留
- 數(shù)據(jù)量太大,內(nèi)存成本太高
三、安裝 redis
安裝 redis 參考鏈接
有以下內(nèi)容輸出,即安裝成功:
四、nodejs 連接 redis 的測試
創(chuàng)建 redis-test 文件夾,控制臺輸入 npm init -y 進(jìn)行初始化,并創(chuàng)建 index.js 文件
安裝 redis
npm i redis
index.js 文件
- 導(dǎo)入 redis 模塊
- 創(chuàng)建客戶端并連接(端口號,服務(wù)端地址)
- 退出
const redis = require('redis')
!(async function () {
// 創(chuàng)建客戶端
const redisClient = redis.createClient(6379, '127.0.0.1')
// 連接
await redisClient.connect()
.then(() => console.log('redis connect success!'))
.catch(console.error)
// set
await redisClient.set('myname', 'zahuopu')
// get
const myname = await redisClient.get('myname')
console.log('myname', myname)
// 退出
redisClient.quit()
})()
開啟 redis 服務(wù),終端運(yùn)行文件:
五、寫在最后
至此,我們明白了為什么要把 session 存入 redis,并對 redis 做了連接的測試。繼續(xù)跟進(jìn)學(xué)習(xí)吧!
后續(xù)會對該項目進(jìn)行多次重構(gòu)【多種框架(express,koa)和數(shù)據(jù)庫(mysql,sequelize,mongodb)】
如果你需要該項目的 源碼,請通過本篇文章最下面的方式 加入 進(jìn)來~~文章來源:http://www.zghlxwxcb.cn/news/detail-832864.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-832864.html
到了這里,關(guān)于【Node.js實戰(zhàn)】一文帶你開發(fā)博客項目之登錄(前置知識)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!