隐藏

NodeJS 5分钟 连接 Redis 读写操作

发布:2024/1/24 18:07:29作者:管理员 来源:本站 浏览次数:689

本文简介


本文主要讲解使用 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


file


我下载了 .msi 格式的安装包,下载后直接双击运行,一直点 “下一步” 就能安装成功。


在安装时记得勾选将 Redis 添加到全局环境。


安装成功后,打开终端,输入一下命令


redis-cli


file


进入交互模式就证明安装成功了,此时可以输入指令操作 Redis 了。


127.0.0.1 是本机 IP;6379 是 Redis 默认的端口号。


写入


写入数据使用 set 指令


set key value


key 是键名,value 是值。


file


我设置了一个 name ,值为 zhangsan。


输入完按回车键,返回 OK 证明写入成功。


读取


读取数据使用 get 。


get key


key 是键名。


file


如果查到就返回值。


查看所有key


如果你不清楚当前存了什么 key ,可以使用 keys * 来查询所有 key


keys *


file


如果你有多个 key ,用上面的语句可以将所有 key 都列出来。


删除


删除使用 del 。


del key


file


我把刚刚创建的 name 这条数据给删掉了。


此时使用 get 或者 keys * 都差不回 name 这条数据了。


以上就是 Redis 的基础用法。



NodeJS 操作 Redis


初始化项目


我用默认模板初始化项目。


npm init -y



安装 Redis 依赖


在写本文时,使用以下命令安装的最新版 Redis 是 4.1.0


npm install redis


如果你想用旧版语法,可以安装指定版本。


比如我之前用的是 2.8 版


npm install redis@2.8



连接


安装好 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()