惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Last Watchdog
The Last Watchdog
AI
AI
Recent Announcements
Recent Announcements
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
J
Java Code Geeks
TaoSecurity Blog
TaoSecurity Blog
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Microsoft Security Blog
Microsoft Security Blog
量子位
T
Threatpost
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - Franky
博客园 - 聂微东
L
LINUX DO - 最新话题
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
C
Check Point Blog
宝玉的分享
宝玉的分享
G
Google Developers Blog
Spread Privacy
Spread Privacy
Cloudbric
Cloudbric
SecWiki News
SecWiki News
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
P
Palo Alto Networks Blog
H
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
About on SuperTechFans
N
Netflix TechBlog - Medium
罗磊的独立博客
月光博客
月光博客

Deno

Deno 2.8 | Deno Claw Patrol: an open-source security firewall for agents | Deno Fresh 2.3: Zero JS by default, View Transitions, and Temporal support | Deno Deno 2.7: Temporal API, Windows ARM, and npm overrides | Deno Build a dinosaur runner game with Deno, pt. 6 | Deno Build a dinosaur runner game with Deno, pt. 5 | Deno Deno Deploy is Generally Available | Deno Introducing Deno Sandbox | Deno Build a dinosaur runner game with Deno, pt. 4 | Deno Build a dinosaur runner game with Deno, pt. 3 | Deno Build a dinosaur runner game with Deno, pt. 2 | Deno React / Next.js Denial-of-Service Vulnerability: Deno Deploy users protected | Deno Deno 2.6: dx is the new npx | Deno Build a dinosaur runner game with Deno, pt. 1 | Deno React Server Functions / Next.js Vulnerability: Deno Deploy users protected | Deno My highlights from the new Deno Deploy | Deno Deno's Other Open Source Projects | Deno How Deno protects against npm exploits | Deno Help Us Raise $200k to Free JavaScript from Oracle | Deno Deno 2.5: Permissions in the config file | Deno Fresh 2.0 Graduates to Beta, Adds Vite Support | Deno Deno 2.4: deno bundle is back | Deno JavaScript™ Trademark Update | Deno What's coming to JavaScript | Deno A brief history of JavaScript | Deno Reports of Deno's Demise Have Been Greatly Exaggerated | Deno An Update on Fresh | Deno How Plaid migrated 100 services to a new database platform 5x faster with Deno | Deno Deno 2.3: Improved deno compile, local npm packages, and more | Deno Add JSR packages with pnpm and Yarn | Deno Zero-config Debugging with Deno and OpenTelemetry | Deno Exploring Art with TypeScript, Jupyter, Polars, and Observable Plot | Deno Deno v Oracle Update 3: Fighting the JavaScript Trademark | Deno Build a custom RAG AI agent in TypeScript and Jupyter | Deno How to get deep traces in your Node.js backend with OTel and Deno | Deno toranoana.deno #20 登録受付中(2025年3月14日) | Deno Node just added TypeScript support. What does that mean for Deno? | Deno The Dino 🦕, the Llama 🦙, and the Whale 🐋 | Deno Publish a lint rule, get a prize | Deno Deno 2.2: OpenTelemetry, Lint Plugins, node:sqlite | Deno If you're not using npm specifiers, you're doing it wrong | Deno How Deno's documentation is evolving | Deno Oracle justified its JavaScript trademark with Node.js—now it wants that ignored | Deno Introducing the JSR open governance board | Deno Intro to Wasm in Deno | Deno Announcing OpenAI on JSR | Deno Deno in 2024 | Deno Goodbye WinterCG, welcome WinterTC | Deno Build a SolidJS app with Deno | Deno Run your Next.js SSR app on Deno Deploy | Deno Solve Advent of Code 2024 with Deno and Win Prizes! | Deno Deno v. Oracle: Canceling the JavaScript Trademark | Deno Deno 2.1: Wasm Imports and other enhancements | Deno Build a Typesafe API with tRPC and Deno | Deno Self-contained Executable Programs with Deno Compile | Deno Build a Database App with Drizzle ORM and Deno | Deno Introducing your new JavaScript package manager: Deno | Deno Announcing Growthbook on JSR | Deno Build an Astro site with Deno | Deno How to convert CommonJS to ESM | Deno Announcing Deno 2 | Deno The Final Touches: What’s New In v2.0.0-rc.10 | Deno Announcing Stable V8 Bindings for Rust | Deno Deno 2.0 Release Candidate | Deno Secure, efficient private npm registries with Cloudsmith and Deno | Deno Painting the Plane as We Fly It: Designing JSR | Deno Introducing Web Cache API support on Deno Deploy | Deno Deno 1.46: The Last 1.x Release | Deno Protect your cloud spend with new Deno Deploy spend limits | Deno What we got wrong about HTTP imports | Deno Benchmarking AWS Lambda Cold Starts Across JavaScript Runtimes | Deno Announcing Supabase on JSR | Deno Deno 1.45: Workspace and Monorepo Support | Deno Introducing KV Backup for Deno Subhosting | Deno A Gentle Intro to TypeScript | Deno Announcing Hono on JSR | Deno How We Made the Deno Language Server Ten Times Faster | Deno How the Guardian uses Deno to audit accessibility and performance across their 2.7 million articles | Deno Introducing More Flexible Domain Association for Deno Subhosting | Deno The stabilization process of the Standard Library has begun | Deno Deno 1.44: Private npm registries, improved Node.js compat, and performance boosts | Deno How we built a secure, performant, multi-tenant cloud platform to run untrusted code | Deno The Deno Standard Library is now available on JSR | Deno How to document your JavaScript package | Deno Your Low Code Solution Needs an Escape Hatch | Deno Deno 1.43: Improved Language Server performance | Deno How Slack used Deno to save months of engineering effort in launching their new platform | Deno JSR Is Not Another Package Manager | Deno Announcing the Hookdeck SDK on JSR | Deno Announcing the Neon Serverless Driver on JSR | Deno An intro to TSConfig for JavaScript Developers | Deno How we built JSR | Deno How Netlify used Deno Subhosting to build a successful edge functions product | Deno Introducing Simpler Project Creation in Deno Deploy | Deno Deno 1.42: Better dependency management with JSR | Deno Introducing deployctl, the command line interface for Deno Deploy | Deno Introducing JSR - the JavaScript Registry | Deno How to add Monaco to a Next.js app and securely run untrusted user code | Deno Survey Results and Roadmap | Deno Deno 1.41: smaller deno compile binaries | Deno
Deno KV is in Open Beta | Deno
2023-09-05 · via Deno

Deno KV is the fastest, easiest way to add a strongly consistent database to your application. It’s built right into the runtime so you can skip configuration and dive right into coding:

const kv = await Deno.openKv();
Add state with a single line of code — no need to provision a database or copy/paste environmental variables.

Today, we’re excited to announce that Deno KV on Deno Deploy is now in open beta. There’s no longer a waitlist so you can get access to Deno KV by simply signing up for Deno Deploy. For those already using Deno Deploy, your projects are automatically updated with KV access.

You can also watch our 2 minute video announcement summarizing this post.

Alongside our announcement, here are some other exciting updates about Deno KV on Deno Deploy:

  • Connect to KV from outside of Deno Deploy
  • Pricing
  • More read regions for lower latency
  • More powerful atomic operations
  • OAuth made easy
  • Coming Soon: key TTL
  • Coming Soon: S3 backups
  • Coming Soon: primary region selection
  • What’s next

Connect to KV from outside of Deno Deploy

To make it easier to explore, import, migrate, and update your KV data on Deno Deploy, you can now connect directly to your KV instance from the command line. Simply set a Deno Deploy personal access token as the local environmental variable DENO_KV_ACCESS_TOKEN and pass your database URL to Deno.openKv():

const kv = await Deno.openKv(
  "https://api.deno.com/databases/<database-id>/connect",
);

You can find your database ID, URL, and more information on how to connect to your managed KV database from your Deno Deploy project page:

Connecting to your Deno KV locally

Now it’ll be easier to import data into production, handle data migrations, inspecting/modifying/exploring data manually, and hosting Deno apps on a different platform with global Deno KV for storage:



import { Semaphore } from "https://deno.land/x/semaphore@v1.1.2/semaphore.ts";

const kv = await Deno.openKv(
  "https://api.deno.com/databases/<database-id>/connect",
);
const concurrencyLimit = 20;
const sem = new Semaphore(concurrencyLimit);

for await (
  const { key, value, versionstamp } of kv.list<any>({ prefix: ["items"] })
) {
  if (typeof value?.createdAt === "number") {
    value.createdAt = new Date(value.createdAt).toISOString();
    const release = await sem.acquire();
    (async () => {
      await kv.atomic().check({ key, versionstamp }).set(key, value).commit();
      release();
    })();
  }
}

for (let i = 0; i < concurrencyLimit; i++) {
  await sem.acquire();
}

console.log("Migration completed!");

Learn more about connecting to your global Deno KV from the command line →

Want to use Deno KV on Deno Deploy but with an app hosted on Fly.io? Here’s a quick guide on using Deno KV connect to do so:

Pricing

We’re excited to announce transparent Deno KV pricing that scales with your needs. Deno KV is billed along three dimensions: storage, read units, and write units.

Storage is the amount of data you store in your Deno KV database over a month, measured in gigabytes. Read and write units are the number of times you read and write data from your Deno KV database, measured in 4 KiB read units and 1 KiB write units respectively. If you perform 3 read transactions of 1 KiB each, you will be billed for 3 read units. If you perform 1 write transaction of 4 KiB, you will be billed for 4 write units.

Write unit usage is additionally multiplied by the number of regions you have enabled for your database. If you have the primary region, and two read replicas enabled, you will be billed for 3 write units for every 1 KiB of writes.

For every user, Deno Deploy’s free tier includes 1 GiB of storage, 15k read units per day and 10k write units per day. Daily usage resets at UTC 00:00.

For those scaling with Deno KV and Deno Deploy, our Pro tier offers:

  • 5 GiB of monthly storage, with $0.75 per additional GiB
  • 45k read units per day, with $1 per additional million reads
  • 30k write units per day, with $2.5 per additional million writes

Here is the complete pricing table for more details:

Free Pro Custom
KV storage 1 GB 5GB (then $0.50/GB) Custom
KV read units/day (4kb) 15,000 45,000 (then $1/M) Custom
KV write units/day (1kb) 10,000 30,000 (then $2.50/M) Custom
Number of DB regions 1 Custom Custom
Select your write region No No Yes
Max monthly usage Free $250 N/A
Does your application or business have unique scaling or global data storage needs? We’d love to learn more.

As a reminder, using Deno KV locally without Deno Deploy will be free.

Learn more about our Deno Deploy and Deno KV pricing plans →

More read regions for lower latency

By default, every Deno KV database comes with a single write region and a single read region. If your users are all over the world, some may experience longer latencies due to the single read region.

Now, you can enable more read regions to expand your database globally for even lower latency:

Screenshot of selecting read regions

Expand your database globally by enabling multiple read regions with a click.

More powerful atomic operations

Atomic operations are a powerful feature of Deno KV that allow you to perform multiple operations in a single transaction. If any of the operations fail, the entire transaction is rolled back, ensuring that your data is always consistent.

Previously, you could only perform up to 10 mutation operations in a single transaction. Many of you told us that this limit was too low, especially when dealing with complex data that require many secondary indexes.

We’ve heard you! The limit has been increased to 1000 mutations per atomic operation, or a total atomic operation size of 800 KiB, whichever is reached first.

OAuth made easy

User authentication is table stakes for any modern web app. To make it as simple as possible to implement auth into your Deno Deploy projects, we’ve built Deno KV OAuth, a high-level OAuth 2.0 wrapper with Deno KV as a backend with a ton of pre-configured common OAuth 2.0 providers, such as GitHub, Google, Facebook, Slack, Discord, and more.

You can add OAuth functionality to your Fresh project using the new plugin:


import { start } from "$fresh/server.ts";
import { createGitHubOAuth2Client } from "https://deno.land/x/deno_kv_oauth/mod.ts";
import { kvOAuthPlugin } from "https://deno.land/x/deno_kv_oauth/fresh.ts";
import manifest from "./fresh.gen.ts";

await start(manifest, {
  plugins: [
    kvOAuthPlugin(createGitHubOAuth2Client()),
  ],
});

Or, if using another framework using the Web API:


import {
  createGitHubOAuth2Client,
  handleCallback,
  signIn,
  signOut,
} from "https://deno.land/x/deno_kv_oauth/mod.ts";

const oauth2Client = createGitHubOAuth2Client();

async function handleSignIn(request: Request) {
  return await signIn(request, oauth2Client);
}

async function handleOAuth2Callback(request: Request) {
  return await handleCallback(request, oauth2Client);
}

async function handleSignOut(request: Request) {
  return await signOut(request);
}
This high level wrapper provides many helper functions to make it easy to add auth, login, and more to your app.

Projects are already using Deno KV OAuth for authentication, such as SaaSKit, KV Sketchbook, and more.

Coming soon

We’ve received your feedback and are working hard to add useful features to make Deno KV on Deno Deploy the easiest, fastest way to add state to your globally hosted project.

Here’s an incomplete list of previews of what’s to come.

Key TTL with expireIn

Key time-to-live expiration is an important feature in Redis, which allows you to easily manage user sessions or create your own caching system. Soon, you can do the same in Deno KV with the expireIn option, which accepts a number in milliseconds:

const db = await Deno.openKv();

await db.set(["a"], 1, { expireIn: 1000 });

The key will be deleted from the database after the specified number of milliseconds in expireIn have elapsed. If the expireIn is not specified, the key will not expire.

Note this feature is already available in the Deno runtime.

S3 backups

Every production application demands data backups in case things go awry. Soon, you’ll be able to enable backups of your Deno KV data to your own S3 bucket:

Enabling S3 backups for your Deno KV data

The backup is real-time, supporting point-in-time recovery for your data. Initially you’ll be able to restore backups to a local Deno KV database, with support for restoring to a hosted Deno KV database coming soon after.

Primary region selection

Deno KV uses a single primary region that processes writes and multiple read regions handling reads. When a write transaction is sent, it’s first processed at the primary region, then replicated to all read regions, providing eventual data consistency across all regions. Thusly, your write latencies are impacted by how far your users are from your primary region, while read latencies when using when using consistency: "eventual" are impacted by how far your users are from any of your read regions.

Soon, you’ll be able to optimize latency and performance for your users by selecting your primary region:

Selecting your primary region in Deno KV

Since there’s no one-size-fits-all configuration for every app or business, its important to have full control over how and where your data is being stored and retrieved to optimize performance for your users.

A primary region switch takes less than 5 seconds to take effect and causes no downtime for your application. We’ll be rolling out this feature to Deno Deploy users in the coming weeks.

What’s next?

Our vision for Deno Deploy is to make it the easiest place to host JavaScript through built-in cloud primitives such as Deno KV (and more — stay tuned!). As we work towards a generally available release of Deno KV and Deno Deploy, we’ll continue to add features to make it as simple as possible to build and host production-ready JavaScript apps.

We’re always open to feedback and feature requests! Feel free to join our growing Discord or create an issue here.

Deploy a project to to Deno Deploy today — it’ll take less than 5 minutes.