用 Upstash 作为你的 Redis 服务器

用 Upstash 作为你的 Redis 服务器

本文继续我们的实战教程(源码:github.com/weijunext/n...%25EF%25BC%258C "https://github.com/weijunext/nextjs-learn-demos)%EF%BC%8C") 今天给大家推荐一个免费的 Redis 服务器,它叫 Upstash。

如果你正在开发个人产品,那么请忘掉 Redis 的配置和各种安全措施,用 Upstash,什么 RDB 和 AOF、雪崩和击穿、密码和权限,这些 Upstash 会帮你搞定,你只需要关注你要实现的功能。

本文假定你已了解 Redis 的基本概念,阅读完本文,你将学习到:

  • 创建一个 Upstash 的 Redis 数据库
  • NextJS 服务端组件和 Redis 交互

创建 Redis 数据库

万事开头需注册,请到 upstash.com/ 注册登录,开始咱们的教程。

首次进入后台,看到的是这样的界面

创建 Redis 数据库

稍等片刻就创建完成了,Redis 信息一览无余。

这种方式创建Redis,相信要比我们手动在本地安装Redis、分配db要流畅的多吧。下面进入正题,NextJS中 怎么使用 Upstash 的 Redis。

服务端组件调用

先安装依赖

bash 复制代码
    yarn add @upstash/redis

实际项目中,我们会在多个地方使用redis,所以应该把redis配置写到lib里,方便调用

ts 复制代码
    // @/lib/redis.ts

    import { Redis } from '@upstash/redis'

    const redis = new Redis({
      url: `${process.env.UPSTASH_REDIS_REST_URL}`,
      token: `${process.env.UPSTASH_REDIS_REST_TOKEN}`,
    })

    export default redis

在服务端组件中直接和 redis 交互

tsx 复制代码
    // @/app/pages.tsx

    ......
    import redis from "@/lib/redis";

    export default async function Home() {
    ......
    	await redis.incr("view");
    	const view = await redis.get("view")

    	return (
    		<>
    			......
    				<span className="flex max-w-fit items-center justify-center space-x-2 rounded-full border border-gray-300 bg-white px-5 py-2 text-sm text-gray-600 shadow-md transition-colors hover:border-gray-800">
              <TablerEyeFilled />
              <p>
                <span className="hidden sm:inline-block">Page Views</span>{" "}
                <span className="font-semibold">{nFormatter(view)}</span>
              </p>
            </span>
    			......
    		</>
    	) 

    ......
    }

如果你疑惑为什么组件内可以直接调用redis,那么请看我的过往文章:

从 demo 中可以知道,Upstash 的 redis 命令和 Node开发者熟悉的 ioredis 几乎一样,所以 Upstash 使用起来不会有任何心理门槛。

我们看看控制台,确认 redis 是否被正确操作了:

当我们刷新几次页面后,在 Usage 页卡下可以看到命令调用次数;

在 Data Browser 可以看到 Redis 里的所有数据。

再看页面,数据和控制台相符,说明以上代码没有问题。

结语

Upstash 这样的第三方托管平台,比较适合个人开发者的个人项目使用,它能够让你最轻量又安全地用上 Redis,你要做的只是学习常用的 Redis 的命令。

源码

github.com/weijunext/n...

相关推荐
小KK_1 小时前
CSS浮动布局指南:从文档流到BFC
前端·css·html
ZengLiangYi2 小时前
sql.js WASM 深度解析
javascript·数据库·后端
Stick_ZYZ2 小时前
从“能调用工具”到“能稳定执行任务”:Agent 工程化的下一步
java·人工智能·后端·spring·ai
Hommy882 小时前
【剪映小助手】音频处理接口
前端·音视频·剪映小助手·视频剪辑自动化
千云2 小时前
使用Dubbo延迟暴露解决启动接口超时,开发人员再也不用熬夜了!
后端
KaMeidebaby2 小时前
卡梅德生物技术快报|蛋白翻译后修饰:YAP/TAZ 分子调控机制与靶向干预技术
前端·人工智能·物联网·百度·新浪微博
JustHappy2 小时前
古法编程秘籍(三):为什么需要函数?因为程序员讨厌重复劳动
前端·javascript·后端
用户2181697049302 小时前
Gin (六) mysql的操作 gin操作mysql
后端
weixin_397574092 小时前
AgentRAG与ReAct推理链:从检索增强到推理增强
前端·react.js·前端框架
想要狠赚笔的小燕2 小时前
vue项目的入口文件是什么 main.js还是index.html,他俩有啥区别
前端·javascript