如何使用 Node.js 在 Redis Cloud 上存储和检索 RedisJSON

如果您一直在开发服务器端应用程序,这意味着您一直在使用某种数据库来存储和检索数据。在大多数选择数据库时,我们的首要任务是速度和可用性。尽管还有其他数据库,但最近,Redis 在 NoSQL 数据库方面已经流行起来。

在过去的几个月里,我一直在使用 Redis 数据库来管理我的一些应用程序,随着应用程序的扩展,我发现我正在使用更多的 Redis 功能。其中一项功能是 Redis Stack。在深入了解 Redis Stack 之前,让我简要介绍一下 Redis 及其重要性。

什么是 Redis?

Redis 是一个开源的内存键/值对数据库。也就是说,数据集以键值格式存储在 RAM 中,而不是磁盘(SSD、HDD)中。使用 Redis 的一些优点是它的速度和高可用性。如果正在开发电子商务、库存、微服务并且速度是首要任务,那么 Redis 是一个更好的解决方案。由于 Redis 云数据库具有低延迟和内存存储功能,可以使用它来管理应用程序。

Redis 堆栈

Redis Stack 是 Redis 的扩展,它使用户能够通过提供动态数据模型来创建数据驱动的应用程序,从而使人们更容易创建可查询的对象。 Redis Stack 有不同的模块,但在本教程中,我们将使用 RedisJSON 模块。 RedisJSON 模块允许以 JSON 格式存储和更新数据。

目标

本文的目的是学习如何使用 RedisJSON 在 Redis Cloud 数据库中以 JSON 格式存储记录。对于这个项目,我们将创建一个简单的 Node 应用程序来存储骑手的详细信息。所以我们有送货员,我们想将他们的记录存储在我们的 Redis 云数据库中。

先决条件:

您需要安装以下内容:

  1. Node
  2. YARN 或 NPM 包安装程序

让我们建立一个 Redis 云数据库并将其连接到我们的 Node 应用程序,就像我之前提到的,我们将使用 Redis Stack 模块之一 RedisJSON。

Redis Cloud

如果你问为什么是 Redis Cloud? Redis 的缺点之一是数据存储在内存中,这需要使用 Redis Enterprise Cloud 的大 RAM,你可以将数据实时存储在内存中并保持持久性。 Redis Cloud 提供了一个多云平台(AWS、Azure、Google Cloud),您可以在其中轻松部署 Redis 数据集,而不必担心数据丢失,并且它支持 Redis 命令和模块。如果您是 Redis Cloud 的新手,您可以使用此链接创建一个免费帐户。创建帐户后,您将获得 30 MB 的免费存储空间,或者您可以开始订阅计划。

环境设置

让我们设置我们的 Node 应用程序。 在系统上打开终端或命令行,并创建一个项目目录或文件夹。

$ mkdir redisjson-node-js

将项目文件夹 CD 创建到文件夹后,使用以下命令创建 package.json 文件。 您可以使用 YARN 或 NPM。

$ yarn init

在我们的应用程序上创建数据库连接之前,我们确实需要安装一个 Redis 客户端包。 我正在使用 Redis npm 包。 Redis 客户端使我们的应用程序能够与 Redis 服务器交互。

$ yarn add express

$ yarn add redis

创建一个 JavaScript 文件。 你可以为你的名字取任何你喜欢的名字。

$ touch index.js
const express = require('express')

// enables our application to interact with redis server
const { createClient } = require('redis');

const app = express();
app.use(express.json());

// database connection
const redis = createClient({
      // url: 'redis://default:Q*Y***H*q***l*rm**Sk**y*9@redis-*3*0*.c62.us-****-2-4.ec2.cloud.redislabs.com:*3*0*
    url: 'redis://username:password@host:port'
});
redis.on('connect', () => console.log('DB connected'));   
redis.on('error', (err) => console.log('Redis Connection Error', err));
redis.connect();

// at the bottom of the script
app.listen(3000, () => console.log('app is running on port 3000'));

如何获取您的 Redis Cloud 数据库凭据:

在配置选项卡下转到您的帐户。

对于用户名和密码——向下滚动到安全会话,那里有你的用户名和密码

主机和端口:在“常规”部分,您的公共端点是您的主机,冒号后面的数字是您的端口号。

下面的代码应该放在数据库连接和 app.listen 函数之间。

app.use('/home', (req, res) => {
    return res.send('welcome home');
});

// store rider details
app.post('/riders', async (req, res) => {

    const {first_name, last_name, email, coordinates} = req.body;
    // convert current date to milliseconds
    const date = Math.floor(Date.now() / 1000);
    
    // checks if the path exist
    const pathExist = await redis.json.type('employee');
    let rider;
    if (pathExist) {
        rider = await redis.json.arrAppend('employee', '.riders', 
        {
            first_name,
            last_name,
            email,
            coordinates,
            update_at: date
        }
        
        )
    }  else  {
        rider = await redis.json.set('employee', '$', {
            riders: [
            {
                first_name,
                last_name,
                email,
                coordinates,
                update_at: date
    
            }
        ]}
        )
        }

    return res.send({
        message: 'rider created successfully',
        data: rider
    });

});

// Get all riders
app.get('/riders', async (req, res) => {
    const rider = await redis.json.get('employee');
    return res.send(rider)
})

// at the bottom of the script
app.listen(3091, () => console.log('app is running on port 3091'));

在存储记录之前,我们必须检查路径是否存在以避免覆盖现有记录。

命令

  • JSON.SET:如果它不存在,将创建一个新路径并将值添加到 JSON 对象。 如果路径存在,它将用新值覆盖现有的 JSON 值。
  • JSON.ARRAPPEND:将 JSON 值添加到数组的末尾。
  • JSON.TYPE:如果路径不退出,则返回 null。
  • JSON.GET:获取指定路径上的所有值。

总结

在本篇文章中,我们学习了如何创建 Redis Cloud数据库,使用 RedisJSON 堆栈模块以 JSON 格式存储和检索记录,我们还看到了使用 Redis 云存储记录的好处。

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » 如何使用 Node.js 在 Redis Cloud 上存储和检索 RedisJSON