本文簡介 本文主要講解使用 NodeJS 操作 Redis ,順便會先帶一帶 Redis 基礎用法。 在寫本文時,使用 NPM 安裝的 Redis 依賴包已經到了 4.1.0 版本了。我以前用過 2.8 ,這兩個版本在用法上也是有差別的。可能一些老項目還在用老版本的依賴包。所以我會把2個版本的用法都 ...
本文簡介
本文主要講解使用 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()
推薦閱讀