keyv-upstash 简介:无服务器 Redis 的无缝键值存储

keyv-upstash 简介:无服务器 redis 的无缝键值存储

github:https://github.com/mahdavipanah/keyv-upstash

keyv-upstash 是 keyv 的存储适配器,可将其连接到无服务器 redis 平台 upstash redis。借助此适配器,您可以为无服务器应用程序中的键值存储提供简单、高效且灵活的解决方案。

什么是keyv?

keyv是一个多功能的键值存储库,通过适配器支持多个后端。它提供:

基于 ttl 的过期:非常适合缓存或持久存储。

命名空间支持:避免共享环境中的按键冲突。

可扩展性:轻松构建自定义模块或添加压缩等功能。

keyv 可与许多适配器配合使用,例如 redis、sqlite、mongodb,现在还支持 upstash redis 的 keyv-upstash。

为什么选择 keyv-upstash?

keyv-upstash 通过与 upstash redis 集成来扩展 keyv 的功能,提供:

无服务器兼容性:upstash redis 无需管理连接即可工作,自动扩展,非常适合无服务器应用程序。

灵活:兼容keyv生态,支持第三方扩展。

cache layering:与 cacheable 结合进行多层缓存。

无供应商锁定:与 serverless-redis-http 完全兼容,因此您可以设置自己的无服务器 redis 并使用此适配器。

入门

按照以下步骤集成 keyv-upstash:

1.安装keyv和keyv-upstash

安装 keyv 和 upstash 适配器:

npm install keyv keyv-upstash

可选:安装 cacheable 以进行分层缓存:

npm install cacheable

2. 设置 keyv-upstash

确保您在 upstash 中创建了 redis 数据库。以下是如何在项目中使用 keyv-upstash:

基本用法

import keyv from 'keyv';import { keyvupstash } from 'keyv-upstash';const keyv = new keyv({  store: new keyvupstash({    url: 'your-upstash-redis-url',    token: 'your-upstash-redis-token',  }),});// set a key-value pairawait keyv.set('foo', 'bar');// retrieve the valueconst value = await keyv.get('foo');console.log(value); // 'bar'

使用命名空间

命名空间可防止键冲突并允许范围清除:

const keyv = new keyv({  store: new keyvupstash({    url: 'your-upstash-redis-url',    token: 'your-upstash-redis-token',    namespace: 'my-namespace',  }),});await keyv.set('foo', 'bar'); // stored as 'my-namespace::foo'

缓存分层与可缓存

将 keyv-upstash 与 cacheable 结合起来进行多层缓存:

import { cacheable } from 'cacheable';const redisstore = new keyvupstash({  url: 'your-upstash-redis-url',  token: 'your-upstash-redis-token',});const cache = new cacheable({  primary: new map(), // fast in-memory caching  secondary: redisstore, // persistent redis caching});await cache.set('foo', 'bar', { ttl: 1000 }); // stores in both layersconst value = await cache.get('foo'); // fast lookup from memory or redisconsole.log(value); // 'bar'

高级功能

批量操作

使用 setmany 和 getmany 提高性能:

await keyv.setMany([  { key: 'key1', value: 'value1' },  { key: 'key2', value: 'value2' },]);const values = await keyv.getMany(['key1', 'key2']);console.log(values); // ['value1', 'value2']

自定义配置

使用defaultttl、keyprefixseparator 和clearbatchsize 等选项自定义您的设置。

以上就是keyv-upstash 简介:无服务器 Redis 的无缝键值存储的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1499372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 21:44:13
下一篇 2025年12月19日 21:44:24

相关推荐

  • 掌握组件通信

    掌握 react 中的组件就是理解它们的行为: 它们如何接收 props,如何处理全局状态,以及如何管理嵌套子组件。有效的组件通信可确保代码干净、可维护。让我们深入了解 react 中组件通信的不同方式以及为什么理解这一点至关重要。 道具: 基本沟通工具在 react 中,props 是组件通信的主…

    2025年12月19日
    000
  • npm 与 npx:有什么区别?

    作者 fimber elemuwa✏️ 在使用 javascript 或 node.js 时,您很可能遇到过 npm,即 node 包管理器。它是管理包、安装依赖项并确保您的项目与其所需的库保持最新状态的首选工具。但是 npx 是另一个与 npm 捆绑在一起的工具,它经常引发这样的问题:两者之间有什…

    2025年12月19日
    000
  • 面向开发人员的顶级免费 API 测试工具

    API 测试是软件开发生命周期中的关键阶段,可确保您的 API 功能正常、可靠并满足用户期望。以下是用于 API 测试的顶级免费测试工具的列表,其中包括 Keploy,这是一种人工智能驱动的解决方案,可增强您的测试工作流程: 1。邮递员 Postman 是 API 测试中最受欢迎的工具之一,它提供:…

    2025年12月19日
    000
  • 外部库:外部库的隐藏重量

    作为开发人员,我们经常依赖外部钩子库来节省时间,利用经过充分测试的解决方案,并专注于项目的大局。然而,考虑这些库对捆绑包大小的影响至关重要,这是影响应用程序性能和加载速度的关键因素。让我们探讨一下这些库如何影响包大小,如何检查是否支持 tree-shaking,以及如何做出明智的决策。 为什么捆绑尺…

    2025年12月19日
    000
  • JavaScript 面试备忘单 – 第 2 部分

    常见 leetcode 模式 // two pointers – in-place array modificationconst modifyarray = (arr) => { let writepointer = 0; for (let readpointer = 0; readpoin…

    2025年12月19日
    000
  • 您希望早点了解的编程秘密

    您是否一直在尝试修复错误或让代码运行得更好?或者也许您只是想学习一些新东西而不是费尽心思?好吧,让我告诉你0x3d.site。对于像您这样的程序员来说,这是一座金矿。该网站提供了一些提示和技巧,可以帮助您改进代码,无论您使用哪种语言。无论您是在探索 Lua、Go、Python 还是 Groovy,这…

    2025年12月19日
    000
  • 使用 Laravel、Inertiajs v 和 Vue 3 实现无限滚动

    在这篇综合指南中,我们将探索如何使用 inertia.js v2.0 和 vue 3 在 laravel 应用程序中实现无限滚动。我们将介绍前端和后端实现,特别注意处理整页刷新并保持滚动位置。 目录 了解组件前端实现后端实现现实示例:带有类别的博客文章最佳实践和注意事项 了解组件 无限滚动的实现依赖…

    2025年12月19日
    000
  • Javascript:使用 Salesforce 实施无密码登录

    salesforce 提供无头无密码登录流程,允许注册用户无缝访问应用程序。无密码登录非常用户友好,它只需要一个有效的电子邮件地址。在这篇文章中,我将分享一些用于使用 salesforce 实现无密码登录流程的代码片段。 要求 开始之前,请确保满足以下条件: a) 您有权访问 salesforce …

    2025年12月19日
    000
  • 想要从事自由软件的远程实习吗?

    阅读我的博客文章,了解我如何获得 Mozilla Firefox 的 @outreachy 实习机会 我第一次申请 Outreachy 是在今年,五月份的实习期间,虽然我没有通过贡献者轮次,但我有幸参与有关可访问性和本地化的伟大项目。  特别是,我致力于将 Deutsch Transifex 术语表…

    2025年12月19日
    000
  • 使用专家级 AWS 托管云服务解锁无缝运营

    管理 AWS 云基础设施可能是一项艰巨的任务。配置、保护和优化云环境的复杂性常常会占用您实现核心业务目标的宝贵时间和资源。借助正确的托管服务,您可以简化运营、增强安全性并降低成本,从而使您的企业能够专注于增长和创新。在本博客中,我们将探讨 AWS 托管云服务如何彻底改变您的云之旅并推动运营成功。 为…

    2025年12月19日
    000
  • EchoAPI 教程:如何在 EchoAPI 中使用脚本

    在本教程中,我们将探索如何利用 echoapi 中的脚本进行高级 api 测试和开发。用 javascript 编写的 echoapi 脚本允许您向 api 请求添加动态功能。通过了解执行前和执行后脚本,您可以轻松增强测试能力、管理变量和操作请求参数。让我们深入了解 echoapi 脚本的强大功能,…

    2025年12月19日 好文分享
    000
  • 使用 Nextjs Tailwind CSS、Prisma 和 Clerk 构建的 MeetRoomly 应用程序

    见面会 使用 next.js 15、tailwind css、prisma 和 clerk 构建的 meetroomly 应用程序。功能包括用户注册、登录、添加房间、查看房间评论和预订。在开发过程中接受贡献。 入门 克隆存储库:git clone https://github.com/saidmou…

    2025年12月19日
    000
  • 了解 Fetch API 中 resok 的重要性

    我一直是 axios 数据获取的狂热用户,但我最近决定改用 fetch api。在探索过程中,我遇到了一个微妙但显着的差异,我认为值得分享。 让我们从这段代码开始。您认为它会记录什么? try{ //this returns a 404 error const res = await fetch(“…

    2025年12月19日
    000
  • 您没有使用(但应该使用)的被低估的 NPM 软件包

    NPM 的世界是广阔的。拥有超过 200 万个可用软件包,您很容易会被一些大牌——React、Lodash、Express——所吸引,而错过一些真正被低估的宝石,这些宝石可以让您作为开发者的生活变得更加轻松。 1。日期-fns-tz无需额外开销即可解决时区问题 时区是最糟糕的。跨时区解析和格式化日期…

    2025年12月19日
    000
  • 不再在 HTML 画布上编写代码行

    您想花早上、下午和晚上的时间使用 rough.js 进行编码,或者更糟糕的是使用 canvas api 进行编码吗? 或者你想在…30分钟而不编写代码的情况下绘制这个? canvascript 是一款开源无代码工具,可确保您不会浪费时间编写代码和跟踪坐标来完成像为画布创建图形这样的创意工作。 只需绘…

    2025年12月19日
    000
  • ✨ 带有玻璃变形效果的发光迪斯科灯泡动画! ✨ 代码 HTML CSS 和 JAVASCRIPT

    Disco Bulb Animation body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(45deg, …

    2025年12月19日
    000
  • React 19 中的新增功能

    行动 react 应用程序中的一个常见用例是执行数据突变,然后更新状态作为响应。例如,当用户提交表单以更改其姓名时,您将发出 api 请求,然后处理响应。过去,您需要手动处理挂起状态、错误、乐观更新和顺序请求。 例如,您可以在 usestate 中处理挂起和错误状态: // before actio…

    2025年12月19日
    000
  • #ustom 代码而不是插件/库 – 简单性展示

    这是三篇文章中的第三篇,我将在其中展示如何快速轻松地实现常见的 web 功能,而无需依赖繁重的库或复杂的框架。这次,我为剪辑内容制作了“阅读更多”按钮 – 实现了最大程度的自动化。 随意使用代码 代码很简单,只是普通的 JavaScript——没有库,没有魔法。它超轻且易于集成。它使用 …

    2025年12月19日
    000
  • 我做了一个简单易用的小费计算器

    您是否曾经发现自己在享用完一顿美餐后,不确定要给服务员多少小费?计算小费有时感觉就像是数学测验,尤其是当您与朋友一起用餐或分摊账单时。这就是小费计算器可以拯救世界的地方! 什么是小费计算器? 小费计算器是一个简单、用户友好的工具,旨在消除小费的猜测。无论您是在餐厅、咖啡店,还是点外卖,我们的工具都可…

    2025年12月19日
    000
  • JUnit 测试:Java 单元测试综合指南

    JUnit 测试是一种广泛使用的 Java 测试框架,它通过提供强大的工具和功能来简化单元测试的过程。本文探讨什么是 JUnit、它为何重要以及如何在 Java 项目中有效地使用它。 什么是 JUnit? JUnit 是一个开源框架,专为用 Java 编写和运行可重复测试而设计。它确保各个代码单元(…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信