本文簡介
本文主要講解使用 NodeJS 操作 Redis ,順便會先帶一帶 Redis 基礎用法,
在寫本文時,使用 NPM 安裝的 Redis 依賴包已經到了 4.1.0 版本了,我以前用過 2.8 ,這兩個版本在用法上也是有差別的,可能一些老專案還在用老版本的依賴包,所以我會把2個版本的用法都簡單講講,
Redis 基礎
Redis 可以說是最最最簡單的資料庫了,大部分資料庫的讀寫操作都是在硬碟上的,而 Redis 是在記憶體上的,所以讀寫速度會比其他傳統資料庫要快,但缺點是資料不能持久化,一旦斷電重啟,資料就沒了,當然,Redis 也是可以將資料持久化的,但我覺得這樣做的成本有點高,如果要將資料持久化不如直接用傳統資料庫,
Redis 可能用得最多的地方就是存盤 session ,用來記錄用戶登錄狀態之類的操作,這類資料就算丟失了也不會對用戶有多大影響,
安裝
要使用 Redis ,首先就要安裝它,windows版下載鏈接放在這里:https://github.com/tporadowski/redis/releases

我下載了 .msi 格式的安裝包,下載后直接雙擊運行,一直點 “下一步” 就能安裝成功,
在安裝時記得勾選將 Redis 添加到全域環境,
安裝成功后,打開終端,輸入一下命令
redis-cli

進入互動模式就證明安裝成功了,此時可以輸入指令操作 Redis 了,
127.0.0.1 是本機 IP;6379 是 Redis 默認的埠號,
寫入
寫入資料使用 set 指令
set key value
key 是鍵名,value 是值,

我設定了一個 name ,值為 zhangsan,
輸入完按回車鍵,回傳 OK 證明寫入成功,
讀取
讀取資料使用 get ,
get key
key 是鍵名,

如果查到就回傳值,
查看所有key
如果你不清楚當前存了什么 key ,可以使用 keys * 來查詢所有 key
keys *

如果你有多個 key ,用上面的陳述句可以將所有 key 都列出來,
洗掉
洗掉使用 del ,
del key

我把剛剛創建的 name 這條資料給刪掉了,
此時使用 get 或者 keys * 都差不回 name 這條資料了,
以上就是 Redis 的基礎用法,
NodeJS 操作 Redis
初始化專案
我用默認模板初始化專案,
npm init -y
安裝 Redis 依賴
在寫本文時,使用以下命令安裝的最新版 Redis 是 4.1.0
npm install redis
如果你想用舊版語法,可以安裝指定版本,
比如我之前用的是 2.8 版
npm install [email protected]
連接
安裝好 Redis 后就可以用 NodeJS 來連接了,
新建一個 js 檔案,
v2.8語法
const redis = require('redis') // 引入 redis
// 創建客戶端
const redisClient = redis.createClient('6379', '127.0.0.1') // 埠,主機
// 監聽錯誤資訊
redisClient.on('error', err => {
console.error(err) // 列印監聽到的錯誤資訊
})
v4.1 語法
const redis = require('redis') // 引入 redis
const redisClient = redis.createClient() // 創建客戶端
// 監聽錯誤資訊
redisClient.on('err', err => {
console.log('redis client error: ', err)
})
// 連接
redisClient.connect(6379, '127.0.0.1')
寫入資料
寫入資料使用 set 方法
v2.8
// 省略部分代碼
redisClient.set('name', 'zhangsan', redis.print)
第三個引數 redis.print 是列印方法,在執行完上面的命令,控制臺會列印一條資訊,
比如執行成功,會列印 Reply: OK
v4.1
const redis = require('redis') // 引入 redis
// 創建客戶端
const redisClient = redis.createClient()
// 監聽錯誤資訊
redisClient.on('err', err => {
console.log('redis client error: ', err)
})
// 創建連接,是個 promise
redisClient.connect(6379, '127.0.0.1')
.then(() => {
redisClient.set('name', 'zhangsan')
.then(val => {
console.log(val)
})
})
上面的代碼意思是,使用 client.connect 連接,成功后再執行 set 操作,
你也可以將上面的代碼改成 async 和 await 語法,
讀取資料
使用 get 方法可以讀取資料
v2.8
// 省略部分代碼
redisClient.get('name', (err, val) => {
if (err) {
console.error(err)
return
}
console.log(val)
})
v4.1
const redis = require('redis') // 引入 redis
// 創建客戶端
const redisClient = redis.createClient()
// 創建連接,是個 promise
redisClient.connect(6379, '127.0.0.1')
.then(() => {
redisClient.get('name')
.then(val => {
console.log(val)
})
})
如果查找到就回傳對應的值,否則回傳 null,
洗掉
使用 del 方法洗掉
v2.8
// 省略部分代碼
redisClient.del('name', (err, val) => {
if (err) {
console.error(err)
return
}
console.log(val)
})
v4.1
const redis = require('redis') // 引入 redis
// 創建客戶端
const redisClient = redis.createClient()
// 創建連接,是個 promise
redisClient.connect(6379, '127.0.0.1')
.then(() => {
redisClient.del('name')
.then(val => {
console.log(val)
})
})
斷開連接
用完就斷,用 quit 方法可以斷開連接,
在斷開連接這件事上,v2.8 和 v4.1 的語法相同
redisClient.quit()
推薦閱讀
??《NodeJS http請求》
??《NodeJS 5分鐘 連接MySQL 增刪改查 》
??《NodeJS 操作cookie 》
點贊 + 關注 + 收藏 = 學會了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/499377.html
標籤:其他
上一篇:從零開始制作【立體鍵盤】,畫UI免寫CSS,【盲打練習】的互動邏輯只用了10來行運算式!
下一篇:前端之CSS介紹(層疊樣式表)
