<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>与后端状态存储交互 on Dapr 文档库</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/</link><description>Recent content in 与后端状态存储交互 on Dapr 文档库</description><generator>Hugo</generator><language>zh-hans</language><atom:link href="https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/index.xml" rel="self" type="application/rss+xml"/><item><title>Azure Cosmos DB</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-cosmosdb-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-cosmosdb-store/</guid><description>&lt;p>Dapr 在保存和检索状态时不对状态值进行转换。Dapr 要求所有状态存储实现遵循特定的键格式规范（参见&lt;a href="https://v1-18.docs.dapr.io/zh-hans/reference/api/state_api/">状态管理规范&lt;/a>）。您可以直接与底层存储交互以操作状态数据，例如：&lt;/p>
&lt;ul>
&lt;li>查询状态。&lt;/li>
&lt;li>创建聚合视图。&lt;/li>
&lt;li>进行备份。&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 Azure Cosmos DB 是一个支持多种 API 的多模式数据库。默认的 Dapr Cosmos DB 状态存储实现使用 &lt;a href="https://docs.microsoft.com/azure/cosmos-db/sql-query-getting-started">Azure Cosmos DB SQL API&lt;/a>。

&lt;/div>

&lt;h2 id="连接到-azure-cosmos-db">连接到 Azure Cosmos DB&lt;/h2>
&lt;p>要连接到您的 Cosmos DB 实例，您可以：&lt;/p>
&lt;ul>
&lt;li>使用 &lt;a href="https://portal.azure.com">Azure 管理门户&lt;/a>上的数据资源管理器。&lt;/li>
&lt;li>使用&lt;a href="https://docs.microsoft.com/azure/cosmos-db/mongodb-introduction">各种 SDK 和工具&lt;/a>。&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 当您为 Dapr 配置 Azure Cosmos DB 时，请指定要使用的具体数据库和集合。以下 Cosmos DB &lt;a href="https://docs.microsoft.com/azure/cosmos-db/sql-query-getting-started">SQL API&lt;/a> 示例假设您已连接到正确的数据库和名为 &amp;ldquo;states&amp;rdquo; 的集合。

&lt;/div>

&lt;h2 id="按应用程序-id-列出键">按应用程序 ID 列出键&lt;/h2>
&lt;p>要获取与应用程序 &amp;ldquo;myapp&amp;rdquo; 关联的所有状态键，请使用查询：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">states&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">CONTAINS&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">states&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">id&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;myapp||&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上述查询返回所有 id 包含 &amp;ldquo;myapp||&amp;rdquo; 的文档，这是状态键的前缀。&lt;/p>
&lt;h2 id="获取特定状态数据">获取特定状态数据&lt;/h2>
&lt;p>要通过键 &amp;ldquo;balance&amp;rdquo; 获取应用程序 &amp;ldquo;myapp&amp;rdquo; 的状态数据，请使用查询：&lt;/p></description></item><item><title>Redis</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-redis-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-redis-store/</guid><description>&lt;p>Dapr 在保存和检索状态时不对状态值进行转换。Dapr 要求所有状态存储实现遵循特定的键格式规范（参见&lt;a href="https://v1-18.docs.dapr.io/zh-hans/reference/api/state_api/">状态管理规范&lt;/a>）。您可以直接与底层存储交互以操作状态数据，例如：&lt;/p>
&lt;ul>
&lt;li>查询状态。&lt;/li>
&lt;li>创建聚合视图。&lt;/li>
&lt;li>进行备份。&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 以下示例使用 Redis CLI 针对使用默认 Dapr 状态存储实现的 Redis 存储。

&lt;/div>

&lt;h2 id="连接到-redis">连接到 Redis&lt;/h2>
&lt;p>您可以使用官方的 &lt;a href="https://redis.io/topics/rediscli">redis-cli&lt;/a> 或任何其他兼容 Redis 的工具连接到 Redis 状态存储以直接查询 Dapr 状态。如果您在容器中运行 Redis，最简单的使用 redis-cli 的方法是通过容器：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run --rm -it --link &amp;lt;Redis 容器的名称&amp;gt; redis redis-cli -h &amp;lt;Redis 容器的名称&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="按应用-id-列出键">按应用 ID 列出键&lt;/h2>
&lt;p>要获取与应用程序 &amp;ldquo;myapp&amp;rdquo; 关联的所有状态键，请使用命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>KEYS myapp*
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上述命令返回现有键的列表，例如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>1&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;myapp||balance&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;myapp||amount&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="获取特定状态数据">获取特定状态数据&lt;/h2>
&lt;p>Dapr 将状态值保存为哈希值。每个哈希值包含一个 &amp;ldquo;data&amp;rdquo; 字段，其中存储状态数据，以及一个 &amp;ldquo;version&amp;rdquo; 字段，作为 ETag，表示不断递增的版本。&lt;/p>
&lt;p>例如，要通过键 &amp;ldquo;balance&amp;rdquo; 获取应用程序 &amp;ldquo;myapp&amp;rdquo; 的状态数据，请使用命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>HGET myapp&lt;span style="color:#ce5c00;font-weight:bold">||&lt;/span>balance data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>要获取状态版本/ETag，请使用命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>HGET myapp&lt;span style="color:#ce5c00;font-weight:bold">||&lt;/span>balance version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="读取-actor-状态">读取 actor 状态&lt;/h2>
&lt;p>要获取与应用程序 ID 为 &amp;ldquo;mypets&amp;rdquo; 的 actor 类型 &amp;ldquo;cat&amp;rdquo; 的实例 ID 为 &amp;ldquo;leroy&amp;rdquo; 关联的所有状态键，请使用命令：&lt;/p></description></item><item><title>SQL server</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-sqlserver-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/query-state-store/query-sqlserver-store/</guid><description>&lt;p>Dapr 在保存和检索状态时不对状态值进行转换。Dapr 要求所有状态存储实现遵循特定的键格式（参见&lt;a href="https://v1-18.docs.dapr.io/zh-hans/reference/api/state_api/">状态管理规范&lt;/a>）。您可以直接与底层存储交互来操作状态数据，例如：&lt;/p>
&lt;ul>
&lt;li>查询状态。&lt;/li>
&lt;li>创建聚合视图。&lt;/li>
&lt;li>进行备份。&lt;/li>
&lt;/ul>
&lt;h2 id="连接到-sql-server">连接到 SQL Server&lt;/h2>
&lt;p>连接到 SQL Server 实例的最简单方法是使用：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.microsoft.com/sql/azure-data-studio/download-azure-data-studio">Azure Data Studio&lt;/a>（Windows、macOS、Linux）&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/sql/ssms/download-sql-server-management-studio-ssms">SQL Server Management Studio&lt;/a>（Windows）&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 当您为 Dapr 配置 Azure SQL 数据库时，您需要指定具体的表名。以下 Azure SQL 示例假设您已经连接到具有名为 &amp;ldquo;states&amp;rdquo; 的表的正确数据库。

&lt;/div>

&lt;h2 id="按应用程序-id-列出键">按应用程序 ID 列出键&lt;/h2>
&lt;p>要获取与应用程序 &amp;ldquo;myapp&amp;rdquo; 关联的所有状态键，请使用以下查询：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">states&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">Key&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">LIKE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;myapp||%&amp;#39;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上述查询返回所有 ID 包含 &amp;ldquo;myapp||&amp;rdquo; 的行，这是状态键的前缀。&lt;/p>
&lt;h2 id="获取特定状态数据">获取特定状态数据&lt;/h2>
&lt;p>要通过键 &amp;ldquo;balance&amp;rdquo; 获取应用程序 &amp;ldquo;myapp&amp;rdquo; 的状态数据，请使用以下查询：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">states&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">Key&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;myapp||balance&amp;#39;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>读取返回行的 &lt;strong>Data&lt;/strong> 字段。要获取状态版本/ETag，请使用以下命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#000">RowVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">states&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">Key&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;myapp||balance&amp;#39;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="获取过滤的状态数据">获取过滤的状态数据&lt;/h2>
&lt;p>要获取 JSON 数据中值 &amp;ldquo;color&amp;rdquo; 等于 &amp;ldquo;blue&amp;rdquo; 的所有状态数据，请使用以下查询：&lt;/p></description></item></channel></rss>