Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
746 lines
16 KiB
Markdown
746 lines
16 KiB
Markdown
# Redis蝻枏<E89DBB> vs Redis<69>笔<EFBFBD> - 霂衣<E99C82>霂湔<E99C82>
|
||
|
||
> **<2A><>﹝<EFBFBD><EFB99D>𧋦嚗?* V1.0
|
||
> **<2A>𥕦遣<F0A595A6>交<EFBFBD>嚗?* 2025-12-12
|
||
> **<2A>格<EFBFBD>霂餉<E99C82><E9A489><EFBFBD>** 鈭批<E988AD>蝏讐<E89D8F><E8AE90><EFBFBD><EFBFBD><EFBFBD>睲犖<E79DB2>?
|
||
> **<2A>桃<EFBFBD>嚗?* 瞉<><E79E89>Redis蝻枏<E89DBB><E69E8F>朙edis<69>笔<EFBFBD><E7AC94><EFBFBD>躹<EFBFBD>?
|
||
|
||
---
|
||
|
||
## <20><> <20>桀<EFBFBD>
|
||
|
||
1. [<EFBFBD>詨<EFBFBD>璁<EFBFBD>艙](#1-<2D>詨<EFBFBD>璁<EFBFBD>艙)
|
||
2. [敶枏<E695B6>蝟餌<E89D9F><E9A48C>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786>(#2-敶枏<E695B6>蝟餌<E89D9F><E9A48C>笔<EFBFBD><E7AC94>嗆<EFBFBD>?
|
||
3. [Redis蝻枏<EFBFBD> vs Redis<69>笔<EFBFBD>撖寞<E69296>](#3-redis蝻枏<E89DBB>-vs-redis<69>笔<EFBFBD>撖寞<E69296>)
|
||
4. [<5B>芰鍂Redis蝻枏<E89DBB><E69E8F><EFBFBD>蔣<EFBFBD>䓞(#4-<2D>芰鍂redis蝻枏<E89DBB><E69E8F><EFBFBD>蔣<EFBFBD>?
|
||
5. [<EFBFBD>舐鍂Redis<EFBFBD>笔<EFBFBD><EFBFBD><EFBFBD>𤣰<EFBFBD>𠹺<EFBFBD>憌𡡞埯](#5-<2D>舐鍂redis<69>笔<EFBFBD><E7AC94><EFBFBD>𤣰<EFBFBD>𠹺<EFBFBD>憌𡡞埯)
|
||
6. [<EFBFBD>刻<EFBFBD><EFBFBD>寞<EFBFBD>](#6-<2D>刻<EFBFBD><E588BB>寞<EFBFBD>)
|
||
|
||
---
|
||
|
||
## 1. <20>詨<EFBFBD>璁<EFBFBD>艙
|
||
|
||
### 1.1 隞<>銋<EFBFBD>糓Redis嚗?
|
||
|
||
**Redis = 銝<>銝芷<E98A9D><E88AB7>扯<EFBFBD><E689AF><EFBFBD><EFBFBD>摮䀹㺭<E480B9>桀<EFBFBD>**
|
||
|
||
<EFBFBD>臭誑<EFBFBD><EFBFBD>圾銝綽<EFBFBD>
|
||
- <20>蘨 **頞<>之<EFBFBD><E4B98B><EFBFBD>鈭怠<E988AD>摮睃<E691AE><E79D83>函征<E587BD>?*
|
||
- <20><> **霂餃<E99C82><E9A483>笔漲<E7AC94><E6BCB2>翰**嚗?ms<6D><73><EFBFBD>
|
||
- <20>𠒣 **<EFBFBD>舀<EFBFBD><EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*
|
||
- <20><> **憭帋葵<E5B88B>滚𦛚<E6BB9A>典虾隞亙<E99A9E>鈭?*
|
||
|
||
Redis<EFBFBD>祈澈<EFBFBD>臭<EFBFBD>銝?*撌亙<E6928C>蝞?*嚗屸<E59A97><E5B1B8>X<EFBFBD>敺<EFBFBD><E695BA>撌亙<E6928C>嚗<EFBFBD>㺭<EFBFBD>桃<EFBFBD><E6A183><EFBFBD><EFBFBD>嚗?
|
||
- String嚗<67><E59A97>蝚虫葡嚗争<E59A97>婙<EFBFBD>?<3F>其<EFBFBD>蝻枏<E89DBB>
|
||
- List嚗<74><E59A97>銵剁<E98AB5><E58981>婙<EFBFBD>?<3F>其<EFBFBD><E585B6>笔<EFBFBD>
|
||
- Set嚗<74><E59A97><EFBFBD><EFBFBD><EFBFBD>
|
||
- Hash嚗<68><E59A97>撣諹”嚗?
|
||
- Sorted Set嚗<74><E59A97>摨誯<E691A8><E8AAAF><EFBFBD><EFBFBD>
|
||
|
||
### 1.2 Redis蝻枏<E89DBB> vs Redis<69>笔<EFBFBD>
|
||
|
||
餈嗘舅銝芣<EFBFBD>敹菜糓**雿輻鍂Redis<69><73><EFBFBD><EFBFBD>峕䲮撘?*嚗䔶<E59A97><E494B6>臭舅銝芯<E98A9D><E88AAF>𣬚<EFBFBD>鈭批<E988AD>嚗?
|
||
|
||
```
|
||
<EFBFBD>輸<EFBFBD>鈭駵edis摰硺<EFBFBD>嚗<EFBFBD><EFBFBD>韐凋僭<EFBFBD><EFBFBD><EFBFBD>
|
||
<20>?
|
||
<EFBFBD>臭誑<EFBFBD>峕𧒄<EFBFBD>其<EFBFBD>嚗?
|
||
<20>鎿<EFBFBD> Redis蝻枏<E89DBB>嚗<EFBFBD>鍂String<6E>唳旿蝏𤘪<E89D8F>嚗?
|
||
<20>婙<EFBFBD> Redis<69>笔<EFBFBD>嚗<EFBFBD>鍂List<73>唳旿蝏𤘪<E89D8F> + BullMQ摨橒<E691A8>
|
||
```
|
||
|
||
**蝐餅<E89D90><E9A485><EFBFBD>圾**嚗?
|
||
```
|
||
Redis = 銝<><E98A9D>见之璆潘<E79286><E6BD98>刻揚銋啁<E98A8B>嚗?
|
||
|
||
Redis蝻枏<EFBFBD> = 憭扳未<E689B3>𣬚<EFBFBD>"敹恍<E695B9>埝<EFBFBD>"
|
||
- 摮䀝<E691AE>镼踴<E995BC><E8B8B4><EFBFBD>銝𡏭正
|
||
- <20>㕑<EFBFBD><E39591><EFBFBD>𧒄<EFBFBD>?
|
||
- <20>券<EFBFBD>䈑<EFBFBD>敹恍<E695B9><E6818D>䰻霂?
|
||
|
||
Redis<EFBFBD>笔<EFBFBD> = 憭扳未<E689B3>𣬚<EFBFBD>"隡𣳇<E99AA1><F0A3B387>蒂"
|
||
- 隞餃𦛚<E9A483>㘾<EFBFBD>
|
||
- <20>厰◇摨誩<E691A8><E8AAA9>?
|
||
- <20>券<EFBFBD>䈑<EFBFBD>撘<EFBFBD>郊隞餃𦛚
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 敶枏<E695B6>蝟餌<E89D9F><E9A48C>笔<EFBFBD><E7AC94>嗆<EFBFBD>?
|
||
|
||
### 2.1 隞<><E99A9E>璉<EFBFBD><E79289>亦<EFBFBD><E4BAA6>?<3F>?
|
||
|
||
#### **<2A>𤑳緵1嚗鋳ullMQ撌脣<E6928C>鋆<EFBFBD><E98B86><EFBFBD>芯蝙<E88AAF>?*
|
||
```json
|
||
// backend/package.json (蝚?6銵?
|
||
"bullmq": "^5.65.0", // <20>?撌脣<E6928C>鋆<EFBFBD><E98B86>隞<EFBFBD><E99A9E>銝剜𧊋雿輻鍂
|
||
```
|
||
|
||
#### **<2A>𤑳緵2嚗𡁜<E59A97><F0A1819C>滢蝙<E6BBA2>刻䌊<E588BB>𠉛<EFBFBD>MemoryQueue**
|
||
```typescript
|
||
// backend/src/common/jobs/JobFactory.ts
|
||
export class JobFactory {
|
||
private static createQueue(): JobQueue {
|
||
const queueType = process.env.QUEUE_TYPE || 'memory'; // <20>?暺䁅恕memory
|
||
|
||
switch (queueType) {
|
||
case 'memory':
|
||
return this.createMemoryQueue(); // <20>?敶枏<E695B6>雿輻鍂餈嗘葵
|
||
|
||
case 'database':
|
||
// TODO: 摰䂿緵DatabaseQueue // <20>?餈䀹瓷摰䂿緵
|
||
return this.createMemoryQueue();
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
#### **<2A>𤑳緵3嚗餷obQueue<75>?銝芣<E98A9D>隞嗡葉鋡怠<E98BA1><E680A0>剁<EFBFBD><E58981>?0甈?*
|
||
```typescript
|
||
// 銝餉<E98A9D>雿輻鍂雿滨蔭嚗?
|
||
1. ExtractionController.ts (TODO瘜券<EFBFBD>)
|
||
2. DualModelExtractionService.ts (TODO瘜券<EFBFBD>)
|
||
3. test-platform-api.ts (瘚贝<EFBFBD>隞<EFBFBD><EFBFBD>)
|
||
4. test-platform-infrastructure.ts (瘚贝<EFBFBD>隞<EFBFBD><EFBFBD>)
|
||
```
|
||
|
||
### 2.2 <20>笔<EFBFBD><E7AC94><EFBFBD><EFBFBD><EFBFBD>餌<EFBFBD>
|
||
|
||
| 蝏<>辣 | 摰㕑<E691B0><E39591>嗆<EFBFBD>?| 雿輻鍂<E8BCBB>嗆<EFBFBD>?| 霂湔<E99C82> |
|
||
|------|---------|---------|------|
|
||
| **Redis蝻枏<E89DBB>** | <20>?<3F>芷<EFBFBD>蝵?| <20>?<3F>芯蝙<E88AAF>?| <20>桀<EFBFBD><E6A180>函<EFBFBD><E587BD>烘emoryCache |
|
||
| **Redis<69>笔<EFBFBD>** | <20>?<3F>芷<EFBFBD>蝵?| <20>?<3F>芯蝙<E88AAF>?| BullMQ撌脣<E6928C>鋆<EFBFBD><E98B86><EFBFBD>芸鍳<E88AB8>?|
|
||
| **<EFBFBD><EFBFBD><EFBFBD>蝻枏<EFBFBD>** | <20>?撌脣<E6928C><E884A3>?| <20>?雿輻鍂銝?| HealthCheck<63><6B>LM蝏𤘪<E89D8F> |
|
||
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔<EFBFBD>** | <20>?撌脣<E6928C><E884A3>?| <20>?雿輻鍂銝?| MemoryQueue |
|
||
|
||
**蝏栞捏**嚗?
|
||
- <20>?<3F>函<EFBFBD>蝟餌<E89D9F>撌脩<E6928C>憸<EFBFBD><E686B8>鈭<EFBFBD><E988AD><EFBFBD>埈沲<E59F88><E6B2B2><EFBFBD>MemoryQueue嚗?
|
||
- <20>?撌脩<E6928C>摰㕑<E691B0>鈭<EFBFBD>ullMQ靘肽<E99D98>
|
||
- <20>?雿<><E99BBF><EFBFBD><EFBFBD><EFBFBD>瘝⊥<E7989D><E28AA5><EFBFBD>迤雿輻鍂Redis嚗<73><E59A97>霈箸糓蝻枏<E89DBB>餈䀹糓<E480B9>笔<EFBFBD>嚗?
|
||
|
||
---
|
||
|
||
## 3. Redis蝻枏<E89DBB> vs Redis<69>笔<EFBFBD>撖寞<E69296>
|
||
|
||
### 3.1 <20>蠘<EFBFBD>撖寞<E69296>
|
||
|
||
| 蝏游漲 | Redis蝻枏<E89DBB> | Redis<69>笔<EFBFBD> |
|
||
|------|----------|----------|
|
||
| **<EFBFBD>券<EFBFBD>?* | 摮睃<E691AE>銝湔𧒄<E6B994>唳旿 | 撘<>郊隞餃𦛚蝞∠<E89D9E> |
|
||
| **<EFBFBD>唳旿蝏𤘪<EFBFBD>** | String嚗<67><E59A97>蝚虫葡嚗?| List嚗<74><E59A97>銵剁<E98AB5> |
|
||
| **<EFBFBD>滢<EFBFBD>** | GET / SET / DELETE | PUSH / POP / ACK |
|
||
| **餈<><E9A488><EFBFBD>箏<EFBFBD>** | TTL<54>芸𢆡餈<F0A286A1><E9A488> | 隞餃𦛚摰峕<E691B0><E5B395>𤾸<EFBFBD><F0A4BEB8>?|
|
||
| **霂餃<E99C82>璅∪<E79285>** | <20>𤩺㦤霂餃<E99C82> | 憿箏<E686BF>憭<EFBFBD><E686AD>嚗㇅IFO嚗?|
|
||
| **<EFBFBD>詨<EFBFBD><EFBFBD>箸艶** | LLM蝏𤘪<E89D8F>蝻枏<E89DBB><E69E8F><EFBFBD>ession | <20><>讃蝑偦<E89D91>劐遙<E58A90>~<EFBFBD><EFBD9E>鸌<EFBFBD>誩<EFBFBD><E8AAA9>?|
|
||
| **摨?撌亙<E6928C>** | <20>湔𦻖<E6B994>甬oredis | BullMQ嚗<51>抅鈭箸oredis嚗?|
|
||
|
||
### 3.2 <20>冽<EFBFBD>蝟餌<E89D9F>銝剔<E98A9D>摰鮋<E691B0>摨𠉛鍂
|
||
|
||
#### **Redis蝻枏<E89DBB><E69E8F><EFBFBD>鍂<EFBFBD>?*
|
||
|
||
```typescript
|
||
// <20>箸艶1嚗匁LM蝏𤘪<E89D8F>蝻枏<E89DBB>
|
||
const cacheKey = `fulltext:${literatureId}:${model}`;
|
||
await cache.set(cacheKey, llmResult, 3600); // 蝻枏<E89DBB>1撠𤩺𧒄
|
||
|
||
// 銝𧢲活<F0A7A2B2>詨<EFBFBD>PDF<44>齿<EFBFBD><E9BDBF>𡝗𧒄嚗?
|
||
const cached = await cache.get(cacheKey);
|
||
if (cached) {
|
||
return cached; // <20>?<3F>湔𦻖餈𥪜<E9A488>嚗諹<E59A97><E8ABB9><EFBFBD>PI韐寧鍂
|
||
}
|
||
```
|
||
|
||
**憟賢<E6869F>**嚗?
|
||
- <20>?<3F>踹<EFBFBD><E8B8B9>滚<EFBFBD>靚<EFBFBD>鍂DeepSeek API嚗<49>?.43/蝭<><E89DAD>
|
||
- <20>?<3F>滚<EFBFBD><E6BB9A>笔漲敹恬<E695B9>隞?<3F><><EFBFBD><EFBFBD>滚<EFBFBD>1ms嚗?
|
||
- <20>?憭𡁜<E686AD>靘见<E99D98>鈭怎<E988AD>摮?
|
||
|
||
---
|
||
|
||
#### **Redis<69>笔<EFBFBD><E7AC94><EFBFBD>鍂<EFBFBD>?*
|
||
|
||
```typescript
|
||
// <20>箸艶2嚗𡁏<E59A97><F0A1818F>桃<EFBFBD><E6A183>劐遙<E58A90>∴<EFBFBD>199蝭<39><E89DAD><EFBFBD><EFBFBD>閬?0-60<36><30><EFBFBD>嚗?
|
||
export async function startScreening(projectId) {
|
||
// 1. <20>𥕦遣隞餃𦛚嚗<F0A69B9A><E59A97><EFBFBD>餃<EFBFBD>霂瑟<E99C82>嚗?
|
||
const task = await prisma.aslScreeningTask.create({...});
|
||
|
||
// 2. <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>笔<EFBFBD>嚗<EFBFBD><E59A97>甇亙<E79487><E4BA99><EFBFBD><EFBFBD>
|
||
await jobQueue.push('asl:screening', {
|
||
taskId: task.id,
|
||
projectId,
|
||
literatureIds: [1, 2, 3, ..., 199]
|
||
});
|
||
|
||
// 3. 蝡见朖餈𥪜<E9A488>嚗<EFBFBD><E59A97>蝡臬<E89DA1>憪贝蔭霂Z<E99C82>摨佗<E691A8>
|
||
return { taskId: task.id, status: 'pending' };
|
||
}
|
||
|
||
// <20>𤾸蝱Worker憭<72><E686AD><EFBFBD>笔<EFBFBD>
|
||
jobQueue.process('asl:screening', async (job) => {
|
||
for (const id of job.data.literatureIds) {
|
||
await processLiterature(id);
|
||
await jobQueue.updateProgress(job.id, ...);
|
||
}
|
||
});
|
||
```
|
||
|
||
**憟賢<E6869F>**嚗?
|
||
- <20>?隞餃𦛚<E9A483><F0A69B9A><EFBFBD><EFBFBD>吔<EFBFBD>摰硺<E691B0><E7A1BA>滚鍳銝滢腺憭梧<E686AD>
|
||
- <20>?<3F>舀<EFBFBD>隞餃𦛚隡睃<E99AA1>蝥?
|
||
- <20>?<3F>舀<EFBFBD>隞餃𦛚<E9A483>滩<EFBFBD>
|
||
- <20>?憭𡁜<E686AD>靘钅𡢿隞餃𦛚<E9A483><F0A69B9A><EFBFBD>
|
||
|
||
---
|
||
|
||
### 3.3 <20><><EFBFBD>臬<EFBFBD><E887AC>啣笆瘥?
|
||
|
||
```typescript
|
||
// ==================== Redis蝻枏<E89DBB> ====================
|
||
import Redis from 'ioredis';
|
||
|
||
const redis = new Redis({
|
||
host: 'localhost',
|
||
port: 6379
|
||
});
|
||
|
||
// <20>坔<EFBFBD>蝻枏<E89DBB>
|
||
await redis.set('key', 'value', 'EX', 3600);
|
||
|
||
// 霂餃<E99C82>蝻枏<E89DBB>
|
||
const value = await redis.get('key');
|
||
|
||
|
||
// ==================== Redis<69>笔<EFBFBD> ====================
|
||
import { Queue, Worker } from 'bullmq';
|
||
|
||
// <20>𥕦遣<F0A595A6>笔<EFBFBD>
|
||
const queue = new Queue('asl:screening', {
|
||
connection: {
|
||
host: 'localhost',
|
||
port: 6379
|
||
}
|
||
});
|
||
|
||
// 瘛餃<E7989B>隞餃𦛚
|
||
await queue.add('screening', { projectId: 123 });
|
||
|
||
// <20>𥕦遣Worker憭<72><E686AD>隞餃𦛚
|
||
const worker = new Worker('asl:screening', async (job) => {
|
||
// 憭<><E686AD>隞餃𦛚
|
||
await processTask(job.data);
|
||
}, {
|
||
connection: { host: 'localhost', port: 6379 }
|
||
});
|
||
```
|
||
|
||
**<EFBFBD>喲睸<EFBFBD>?*嚗?
|
||
- <20>?銝方<E98A9D><E696B9><EFBFBD>餈墧𦻖<E5A2A7>啣<EFBFBD>銝<EFBFBD>銝析edis摰硺<E691B0>
|
||
- <20>?<3F>臭誑<E887AD>峕𧒄雿輻鍂嚗<E98D82><E59A97>銝滚僕<E6BB9A>堆<EFBFBD>
|
||
- <20>?BullMQ<4D><51><EFBFBD>銋<EFBFBD>糓<EFBFBD>甬oredis摰䂿緵<E482BF>?
|
||
|
||
---
|
||
|
||
## 4. <20>芰鍂Redis蝻枏<E89DBB><E69E8F><EFBFBD>蔣<EFBFBD>?
|
||
|
||
### 4.1 <20>臭誑皛∟雲<E2889F><E99BB2><EFBFBD>瘙?<3F>?
|
||
|
||
1. **LLM蝏𤘪<E89D8F>蝻枏<E89DBB>** <20>?
|
||
- <20>踹<EFBFBD><E8B8B9>滚<EFBFBD>API靚<49>鍂
|
||
- <20><><EFBFBD><EFBFBD>鞉𧋦
|
||
- <20>𣂼<EFBFBD><F0A382BC>滚<EFBFBD><E6BB9A>笔漲
|
||
|
||
2. **Session蝞∠<E89D9E>** <20>?
|
||
- 憭𡁜<E686AD>靘见<E99D98>鈭俟ession
|
||
- <20>冽<EFBFBD><E586BD>嗆<EFBFBD><E59786><EFBFBD>甇?
|
||
|
||
3. **<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亦<EFBFBD>摮?* <20>?
|
||
- <20>踹<EFBFBD><E8B8B9>滚<EFBFBD>閫<EFBFBD><E996AB>Excel
|
||
|
||
4. **<EFBFBD>剜<EFBFBD>隞餃𦛚** <20>?
|
||
- < 10蝘垍<E89D98>隞餃𦛚
|
||
- <20>湔𦻖<E6B994>沈TTP霂瑟<E99C82>銝剖<E98A9D><E58996>?
|
||
|
||
### 4.2 <20>䭾<EFBFBD>皛∟雲<E2889F><E99BB2><EFBFBD>瘙?<3F>?
|
||
|
||
1. **<EFBFBD>踵𧒄<EFBFBD>港遙<EFBFBD>⊥<EFBFBD>銋<EFBFBD><EFBFBD>** <20>?
|
||
```
|
||
<20>箸艶嚗𡁶鍂<F0A181B6>瑟<EFBFBD>鈭?99蝭<39><E89DAD><EFBFBD>桃<EFBFBD><E6A183>㚁<EFBFBD><E39A81><EFBFBD>閬?0-60<36><30><EFBFBD>嚗?
|
||
|
||
憒<><E68692><EFBFBD>芰鍂Redis蝻枏<E89DBB>嚗?
|
||
- 隞餃𦛚<E9A483>嗆<EFBFBD><E59786><EFBFBD><EFBFBD>典<EFBFBD>摮?<3F>?摰硺<E691B0><E7A1BA>滚鍳銝W仃
|
||
- <20>䭾<EFBFBD><E4ADBE>W<EFBFBD>銝剜鱏<E5899C><E9B18F>遙<EFBFBD>?
|
||
- <20>冽<EFBFBD><E586BD>见<EFBFBD>隞餃𦛚瘨<F0A69B9A>仃
|
||
```
|
||
|
||
2. **隞餃𦛚<E9A483>笔<EFBFBD>蝞∠<E89D9E>** <20>?
|
||
```
|
||
<20>箸艶嚗?0銝芰鍂<E88AB0>瑕<EFBFBD><E79195>嗆<EFBFBD>鈭斗鸌<E69697>譍遙<E8AD8D>?
|
||
|
||
憒<><E68692><EFBFBD>芰鍂Redis蝻枏<E89DBB>嚗?
|
||
- <20>䭾<EFBFBD><E4ADBE>㘾<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>亙<EFBFBD><E4BA99>滚𦛚嚗?
|
||
- <20>䭾<EFBFBD><E4ADBE>𣂼<EFBFBD>撟嗅<E6929F>
|
||
- <20>滚𦛚<E6BB9A>典虾<E585B8>質◤<E8B3AA>梶<EFBFBD>
|
||
```
|
||
|
||
3. **隞餃𦛚<E9A483>滩<EFBFBD>** <20>?
|
||
```
|
||
<20>箸艶嚗𡁏<E59A97>蝭<EFBFBD><E89DAD><EFBFBD>桀<EFBFBD><E6A180><EFBFBD>仃韐?
|
||
|
||
憒<><E68692><EFBFBD>芰鍂Redis蝻枏<E89DBB>嚗?
|
||
- <20>䭾<EFBFBD><E4ADBE>芸𢆡<E88AB8>滩<EFBFBD>
|
||
- <20><>閬<EFBFBD>鍂<EFBFBD>琿<EFBFBD><E790BF>唳<EFBFBD>鈭?
|
||
```
|
||
|
||
4. **<2A><><EFBFBD>撘譍遙<E8AD8D>∪<EFBFBD><E288AA>?* <20>?
|
||
```
|
||
<20>箸艶嚗锭AE<41>?銝芸<E98A9D>靘?
|
||
|
||
憒<><E68692><EFBFBD>芰鍂Redis蝻枏<E89DBB>嚗?
|
||
- <20>䭾<EFBFBD><E4ADBE>讛<EFBFBD><E8AE9B>芯葵摰硺<E691B0>憭<EFBFBD><E686AD><EFBFBD>芯葵隞餃𦛚
|
||
- <20>航<EFBFBD><E888AA>滚<EFBFBD>憭<EFBFBD><E686AD>
|
||
```
|
||
|
||
### 4.3 摰鮋<E691B0>敶勗<E695B6>霂<EFBFBD>摯
|
||
|
||
#### **憒<><E68692><EFBFBD>芸鍳<E88AB8>沖edis蝻枏<E89DBB>嚗?*
|
||
|
||
| 敶勗<E695B6>蝏游漲 | 霂<><E99C82> | 霂湔<E99C82> |
|
||
|---------|------|------|
|
||
| **LLM<4C>鞉𧋦<E99E89>批<EFBFBD>** | <20>?隡条<E99AA1> | 蝻枏<E89DBB><E69E8F>賭葉嚗諹<E59A97><E8ABB9>?0-50%韐寧鍂 |
|
||
| **憭𡁜<E686AD>靘𧢲𣈲<F0A7A2B2>?* | <20>?隡条<E99AA1> | 蝻枏<E89DBB><E69E8F>曹澈 |
|
||
| **<2A>蹂遙<E8B982>∪虾<E288AA>䭾<EFBFBD>?* | <20>𩤃<EFBFBD> 銝<><E98A9D>?| 隞滨<E99A9E>靘肽<E99D98>MemoryQueue |
|
||
| **隞餃𦛚蝞∠<E89D9E><E288A0>賢<EFBFBD>** | <20>𩤃<EFBFBD> 銝<><E98A9D>?| <20>牐<EFBFBD><E78990><EFBFBD>漣<EFBFBD><E6BCA3><EFBFBD>霂?|
|
||
| **蝟餌<E89D9F><E9A48C>舀<EFBFBD>撅閙<E69285>?* | <20>椬 銝剔<E98A9D> | <20>訫<EFBFBD>靘见虾隞伐<E99A9E>憭𡁜<E686AD>靘𧢲<E99D98><F0A7A2B2>桅<EFBFBD> |
|
||
|
||
---
|
||
|
||
## 5. <20>舐鍂Redis<69>笔<EFBFBD><E7AC94><EFBFBD>𤣰<EFBFBD>𠹺<EFBFBD>憌𡡞埯
|
||
|
||
### 5.1 <20>嗥<EFBFBD><E597A5><EFBFBD><EFBFBD> <20>兛
|
||
|
||
#### **<2A>嗥<EFBFBD>1嚗帋遙<E5B88B>⊥<EFBFBD>銋<EFBFBD><E98A8B>**
|
||
```
|
||
敶枏<EFBFBD>嚗㇈emoryQueue嚗㚁<EFBFBD>
|
||
- <20>冽<EFBFBD><E586BD>𣂷漱<F0A382B7>寥<EFBFBD>隞餃𦛚
|
||
- 摰硺<E691B0><E7A1BA>滚鍳 <20>?<3F>?隞餃𦛚銝W仃
|
||
- <20>冽<EFBFBD><E586BD>閗<EFBFBD><E99697><EFBFBD><EFBFBD>5-10%
|
||
|
||
<EFBFBD>寧鍂Redis<EFBFBD>笔<EFBFBD>嚗?
|
||
- 隞餃𦛚靽嘥<E99DBD><E598A5>沖edis
|
||
- 摰硺<E691B0><E7A1BA>滚鍳 <20>?<3F>?隞餃𦛚蝏抒賒
|
||
- <20>冽<EFBFBD><E586BD>閗<EFBFBD><E99697><EFBFBD><EFBFBD>< 1%
|
||
```
|
||
|
||
#### **<2A>嗥<EFBFBD>2嚗帋遙<E5B88B>⊿<EFBFBD>霂?*
|
||
```
|
||
敶枏<EFBFBD>嚗㇈emoryQueue嚗㚁<EFBFBD>
|
||
- LLM靚<4D>鍂憭梯揖 <20>?<3F>?隞餃𦛚<E9A483><F0A69B9A>扇銝箏仃韐?
|
||
- <20><>閬<EFBFBD>鍂<EFBFBD>琿<EFBFBD><E790BF>唳<EFBFBD>鈭?
|
||
|
||
<EFBFBD>寧鍂Redis<EFBFBD>笔<EFBFBD>嚗?
|
||
- LLM靚<4D>鍂憭梯揖 <20>?<3F>?<3F>芸𢆡<E88AB8>滩<EFBFBD>3甈?
|
||
- <20><>㺭<EFBFBD><E3BAAD><EFBFBD>選<EFBFBD>2蝘鉝<E89D98>?蝘鉝<E89D98>?蝘𡜐<E89D98>
|
||
```
|
||
|
||
#### **<2A>嗥<EFBFBD>3嚗𡁜<E59A97>撣<EFBFBD><E692A3>隞餃𦛚<E9A483><F0A69B9A><EFBFBD>**
|
||
```
|
||
敶枏<EFBFBD>嚗㇈emoryQueue嚗㚁<EFBFBD>
|
||
- 瘥譍葵摰硺<E691B0><E7A1BA>祉<EFBFBD>憭<EFBFBD><E686AD>隞餃𦛚
|
||
- <20>䭾<EFBFBD><E4ADBE>讛<EFBFBD>
|
||
|
||
<EFBFBD>寧鍂Redis<EFBFBD>笔<EFBFBD>嚗?
|
||
- 憭帋葵Worker<65>W<EFBFBD>隞餃𦛚
|
||
- <20>芸𢆡韐蠘蝸<E8A098><E89DB8>﹛
|
||
- <20>𣂷葵Worker<65><72><EFBFBD>嚗<EFBFBD><E59A97>隞頟orker<65>亦恣
|
||
```
|
||
|
||
#### **<2A>嗥<EFBFBD>4嚗帋遙<E5B88B>∠<EFBFBD><E288A0>?*
|
||
```
|
||
敶枏<EFBFBD>嚗㇈emoryQueue嚗㚁<EFBFBD>
|
||
- 隞餃𦛚<E9A483>嗆<EFBFBD><E59786>銁<EFBFBD><E98A81><EFBFBD>銝?
|
||
- <20>䭾<EFBFBD><E4ADBE>亦<EFBFBD><E4BAA6><EFBFBD>蟮隞餃𦛚
|
||
|
||
<EFBFBD>寧鍂Redis<EFBFBD>笔<EFBFBD>嚗?
|
||
- 隞餃𦛚<E9A483><F0A69B9A>蟮靽嘥<E99DBD>
|
||
- <20>臭誑<E887AD>亦<EFBFBD>憭梯揖<E6A2AF>笔<EFBFBD>
|
||
- 蝏蠘恣憭<E681A3><E686AD><EFBFBD>園鵭
|
||
```
|
||
|
||
### 5.2 憌𡡞埯<F0A1A19E><E59FAF><EFBFBD> <20>𩤃<EFBFBD>
|
||
|
||
#### **憌𡡞埯1嚗𡁜<E59A97><F0A1819C>惩<EFBFBD><E683A9><EFBFBD>漲** <20>椬 銝剔<E98A9D>
|
||
```
|
||
敶枏<EFBFBD>嚗?
|
||
- MemoryQueue嚗𡁶<E59A97><F0A181B6>𨰻<EFBFBD><F0A8B0BB><EFBFBD><EFBFBD><EFBFBD>圾
|
||
- 隞<><E99A9E><EFBFBD>𧶏<EFBFBD>~200銵?
|
||
|
||
<EFBFBD>嫣蛹BullMQ嚗?
|
||
- <20><>閬<EFBFBD>郎銋泎ullMQ API
|
||
- 隞<><E99A9E><EFBFBD>𧶏<EFBFBD>~500銵?
|
||
- <20><>閬<EFBFBD><E996AC>蝵娠orker
|
||
```
|
||
|
||
**蝻栞圾**嚗?
|
||
- <20>?BullMQ<4D><51>﹝摰<EFB99D><E691B0>
|
||
- <20>?蝷曉躹瘣餉<E798A3>嚗𠃑itHub 15k+ stars嚗?
|
||
- <20>?<3F>睲賑撌脩<E6928C>摰㕑<E691B0>鈭<EFBFBD><E988AD>韏?
|
||
|
||
---
|
||
|
||
#### **憌𡡞埯2嚗帋<E59A97>韏餸edis蝔喳<E89D94><E596B3>?* <20>椬 銝剔<E98A9D>
|
||
```
|
||
<EFBFBD>箸艶嚗鑹edis<EFBFBD><EFBFBD><EFBFBD>
|
||
- Redis蝻枏<E89DBB>嚗𡁜虾隞仿<E99A9E>蝥批<E89DA5><E689B9><EFBFBD><EFBFBD>
|
||
- Redis<69>笔<EFBFBD>嚗𡁏<E59A97>瘜閖<E7989C>蝥改<E89DA5><E694B9>笔<EFBFBD>敹<EFBFBD>◆<EFBFBD><E29786><EFBFBD><EFBFBD>吔<EFBFBD>
|
||
```
|
||
|
||
**蝻栞圾**嚗?
|
||
- <20>?<3F>刻揚銋啁<E98A8B><E59581>舫<EFBFBD><E888AB>舐鍂<E88890>㇌edis嚗?9.95%嚗?
|
||
- <20>?銝颱<E98A9D><E9A2B1>芸𢆡<E88AB8><F0A286A1>揢
|
||
- <20>?摰鮋<E691B0>憌𡡞埯敺<E59FAF><E695BA>
|
||
|
||
---
|
||
|
||
#### **憌𡡞埯3嚗朞<E59A97>霂閖𠗕摨血<E691A8><E8A180>?* <20>叚 雿?
|
||
```
|
||
敶枏<EFBFBD>嚗?
|
||
- console.log() <20>喳虾
|
||
- 隞餃𦛚<E9A483>典<EFBFBD>摮䀝葉
|
||
|
||
<EFBFBD>嫣蛹BullMQ嚗?
|
||
- <20><>閬<EFBFBD>䰻<EFBFBD>苄edis<69>唳旿
|
||
- <20><>閬<EFBFBD>鍂BullBoard嚗<64>虾閫<E899BE><E996AB>撌亙<E6928C>嚗?
|
||
```
|
||
|
||
**蝻栞圾**嚗?
|
||
- <20>?BullBoard<72>𣂷<EFBFBD>Web UI
|
||
- <20>?<3F>臭誑<E887AD>见<EFBFBD>隞餃𦛚<E9A483>嗆<EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>霂閙活<E99699>?
|
||
- <20>?<3F>亙<EFBFBD><E4BA99>渲祕蝏?
|
||
|
||
---
|
||
|
||
#### **憌𡡞埯4嚗𡁜<E59A97>摮睃<E691AE><E79D83>?* <20>叚 雿?
|
||
```
|
||
<EFBFBD><EFBFBD><EFBFBD>嚗鑹edis<EFBFBD>笔<EFBFBD>隡𡁜<EFBFBD><EFBFBD>典<EFBFBD>憭𡁜<EFBFBD>摮矋<EFBFBD>
|
||
|
||
摰鮋<EFBFBD>嚗?
|
||
- <20>蓥葵隞餃𦛚<E9A483>唳旿嚗鰺1KB
|
||
- 100銝芸僎<E88AB8>睲遙<E79DB2>∴<EFBFBD>100KB
|
||
- 1000銝芯遙<E88AAF>∪<EFBFBD><E288AA>莎<EFBFBD>1MB
|
||
- 撖?56MB Redis敶勗<E695B6>敺<EFBFBD><E695BA>
|
||
```
|
||
|
||
---
|
||
|
||
### 5.3 憌𡡞埯<F0A1A19E>拚猐
|
||
|
||
| 憌𡡞埯 | 銝仿<E98A9D><E4BBBF>?| 璁<><E79281> | 蝻栞圾<E6A09E>曉漲 | 撱箄悅 |
|
||
|------|--------|------|----------|------|
|
||
| **憓𧼮<E68693>憭齿<E686AD>摨?* | <20>椬 銝?| <20>𣞁 擃?| <20>?<3F>?| <20>𣂷<EFBFBD><F0A382B7>寡悌<E5AFA1><E6828C>﹝ |
|
||
| **Redis靘肽<E99D98>** | <20>𣞁 擃?| <20>叚 雿?| <20>?<3F>?| 擃睃虾<E79D83>函<EFBFBD> |
|
||
| **靚<><E99D9A><EFBFBD>圈𠗕** | <20>叚 雿?| <20>椬 銝?| <20>?<3F>?| 雿輻鍂BullBoard |
|
||
| **<2A><><EFBFBD><EFBFBD>删鍂** | <20>叚 雿?| <20>叚 雿?| <20>?<3F>?| <20>烐綉<E78390>喳虾 |
|
||
|
||
**蝏栞捏嚗𡁻<E59A97><F0A181BB>拙虾<E68B99>改<EFBFBD><E694B9>嗥<EFBFBD>憭找<E686AD>憌𡡞埯**
|
||
|
||
---
|
||
|
||
## 6. <20>刻<EFBFBD><E588BB>寞<EFBFBD>
|
||
|
||
### 6.1 皜鞱<E79A9C>撘誩<E69298><E8AAA9>踝<EFBFBD><E8B89D>刻<EFBFBD>嚗争<E59A97>
|
||
|
||
```
|
||
<EFBFBD>嗆挾1嚗<EFBFBD>𧋦<EFBFBD>剁<EFBFBD>: <20>舐鍂Redis蝻枏<E89DBB>
|
||
<EFBFBD>鎿<EFBFBD> <20>格<EFBFBD>嚗朞圾<E69C9E>蚯LM<4C>鞉𧋦<E99E89>桅<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD> 撌乩<E6928C><E4B9A9>𧶏<EFBFBD>2憭?
|
||
<EFBFBD>鎿<EFBFBD> 憌𡡞埯嚗帋<E59A97>嚗<EFBFBD><E59A97><EFBFBD>滨漣<E6BBA8>寞<EFBFBD>嚗?
|
||
<EFBFBD>婙<EFBFBD> <20>嗥<EFBFBD>嚗朞<E59A97><E69C9E>?0-50% API韐寧鍂
|
||
|
||
<EFBFBD>嗆挾2嚗<EFBFBD><EFBFBD><EFBFBD>剁<EFBFBD>: <20>舐鍂Redis<69>笔<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD> <20>格<EFBFBD>嚗朞圾<E69C9E>喲鵭隞餃𦛚<E9A483>舫<EFBFBD><E888AB>?
|
||
<EFBFBD>鎿<EFBFBD> 撌乩<E6928C><E4B9A9>𧶏<EFBFBD>3憭?
|
||
<EFBFBD>鎿<EFBFBD> 憌𡡞埯嚗帋葉嚗<E89189><E59A97><EFBFBD>舀綉嚗?
|
||
<EFBFBD>婙<EFBFBD> <20>嗥<EFBFBD>嚗帋遙<E5B88B>∩腺憭梁<E686AD><E6A281>滢<EFBFBD>10<31>?
|
||
|
||
<EFBFBD>嗆挾3嚗<EFBFBD>𧊋<EFBFBD>伐<EFBFBD>: 隡睃<E99AA1>銝𡒊<E98A9D><F0A1928A>?
|
||
<EFBFBD>鎿<EFBFBD> BullBoard<72>航<EFBFBD><E888AA>?
|
||
<EFBFBD>鎿<EFBFBD> 隞餃𦛚隡睃<E99AA1>蝥?
|
||
<EFBFBD>鎿<EFBFBD> <20>扯<EFBFBD><E689AF>烐綉
|
||
<EFBFBD>婙<EFBFBD> <20>𡃏郎<F0A1838F>箏<EFBFBD>
|
||
```
|
||
|
||
### 6.2 霂衣<E99C82>摰墧鴌霈∪<E99C88>
|
||
|
||
#### **<2A>嗆挾1嚗鑹edis蝻枏<E89DBB>嚗<EFBFBD>𧋦<EFBFBD>剁<EFBFBD>**
|
||
|
||
**Day 1-2嚗𡁜<E59A97><F0A1819C>訌edisCacheAdapter**
|
||
```bash
|
||
# <20><><EFBFBD><EFBFBD><EFBFBD>獢<EFBFBD><E78DA2>04-Redis<69>寥<EFBFBD>惩<EFBFBD><E683A9>質恣<E8B3AA>?md
|
||
# Phase 1-3
|
||
|
||
<EFBFBD>?摰㕑<E691B0>ioredis
|
||
<EFBFBD>?摰䂿緵RedisCacheAdapter
|
||
<EFBFBD>?瘛餃<E7989B><E9A483>滨漣蝑𣇉裦
|
||
<EFBFBD>?<3F>砍𧑐瘚贝<E7989A>
|
||
```
|
||
|
||
**撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>**嚗?
|
||
```bash
|
||
<EFBFBD>?HealthCheckService蝻枏<E89DBB><E69E8F>賭葉
|
||
<EFBFBD>?LLM12FieldsService蝻枏<E89DBB><E69E8F>賭葉
|
||
<EFBFBD>?摰硺<E691B0><E7A1BA>滚鍳蝻枏<E89DBB>銝滢腺憭?
|
||
<EFBFBD>?Redis<69><73><EFBFBD>蝟餌<E89D9F>隞滚虾<E6BB9A>剁<EFBFBD><E58981>滨漣嚗?
|
||
```
|
||
|
||
---
|
||
|
||
#### **<2A>嗆挾2嚗鑹edis<69>笔<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>剁<EFBFBD>**
|
||
|
||
**Day 1嚗𡁜<E59A97><F0A1819C>訌edisQueue**
|
||
```typescript
|
||
// <20>𥕦遣嚗颹ackend/src/common/jobs/RedisQueue.ts
|
||
import { Queue, Worker } from 'bullmq';
|
||
|
||
export class RedisQueue implements JobQueue {
|
||
// ... 摰䂿緵
|
||
}
|
||
```
|
||
|
||
**Day 2嚗朞<E59A97>蝘颱<E89D98><E9A2B1>∩誨<E288A9>?*
|
||
```typescript
|
||
// 靽格㺿嚗窃creeningService.ts
|
||
// 隞𠬍<E99A9E>
|
||
processLiteraturesInBackground(task.id, ...);
|
||
|
||
// <20>嫣蛹嚗?
|
||
await jobQueue.push('asl:screening', {
|
||
taskId: task.id,
|
||
projectId,
|
||
literatures
|
||
});
|
||
```
|
||
|
||
**Day 3嚗𡁏<E59A97>霂蓥<E99C82>銝羓瑪**
|
||
```bash
|
||
<EFBFBD>?<3F>訫<EFBFBD>瘚贝<E7989A>
|
||
<EFBFBD>?<3F><><EFBFBD>瘚贝<E7989A>
|
||
<EFBFBD>?<3F>见<EFBFBD>瘚贝<E7989A>
|
||
<EFBFBD>?<3F><><EFBFBD>璅⊥<E79285>瘚贝<E7989A>
|
||
<EFBFBD>?<3F>啣漲<E595A3>穃<EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
### 6.3 <20><>撠𤩺㺿<F0A4A9BA>冽䲮獢<E4B2AE><E78DA2>憒<EFBFBD><E68692>韏<EFBFBD><E99F8F><EFBFBD>厰<EFBFBD>嚗?
|
||
|
||
**憒<><E68692><EFBFBD>芣<EFBFBD>1<EFBFBD>冽𧒄<E586BD>湛<EFBFBD>撱箄悅嚗?*
|
||
|
||
```
|
||
隡睃<EFBFBD>蝥?嚗<><E59A97>憿鳴<E686BF>嚗鑹edis蝻枏<E89DBB>
|
||
- 閫<><E996AB>LLM<4C>鞉𧋦<E99E89>桅<EFBFBD>
|
||
- 撌乩<E6928C><E4B9A9>𧶏<EFBFBD>2憭?
|
||
|
||
隡睃<EFBFBD>蝥?嚗<>虾<EFBFBD>㚁<EFBFBD>嚗鑹edis<69>笔<EFBFBD>
|
||
- <20><>𧒄靽脲<E99DBD>MemoryQueue
|
||
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD>臬<EFBFBD>箏𦛚
|
||
- 蝑厩鍂<E58EA9>瑁<EFBFBD>璅∪<E79285><E288AA>踹<EFBFBD><E8B8B9>齿㺿<E9BDBF>?
|
||
```
|
||
|
||
**<2A>斗鱏<E69697><E9B18F><EFBFBD>**嚗?
|
||
```
|
||
憒<EFBFBD><EFBFBD>皛∟雲隞乩<EFBFBD><EFBFBD>∩辣嚗<EFBFBD>虾隞交<EFBFBD>蝻𣫮edis<EFBFBD>笔<EFBFBD>嚗?
|
||
<EFBFBD>?<3F>冽<EFBFBD><E586BD>?< 20
|
||
<EFBFBD>?SAE<41>芣<EFBFBD>1銝芸<E98A9D>靘?
|
||
<EFBFBD>?<3F>寥<EFBFBD>隞餃𦛚銝漤<E98A9D>蝜<EFBFBD><E89D9C>瘥誩予 < 5銝迎<E98A9D>
|
||
<EFBFBD>?<3F>臭誑<E887AD>亙<EFBFBD><E4BA99>嗅<EFBFBD>隞餃𦛚銝W仃
|
||
|
||
<EFBFBD>血<EFBFBD>嚗<EFBFBD>遣霈桀偷敹怠鍳<EFBFBD>沖edis<EFBFBD>笔<EFBFBD>
|
||
```
|
||
|
||
---
|
||
|
||
### 6.4 銝箔<E98A9D>銋㇂ullMQ撌脩<E6928C>摰㕑<E691B0>雿<EFBFBD>𧊋雿輻鍂嚗?
|
||
|
||
**<2A>冽<EFBFBD><E586BD>笔<EFBFBD>**嚗?
|
||
1. **霈∪<E99C88>雿輻鍂雿<E98D82>𧊋摰墧鴌**嚗𡁜<E59A97><F0A1819C>烐𧒄霈∪<E99C88><E288AA>步ullMQ嚗<51><E59A97>摰㕑<E691B0>鈭<EFBFBD><E988AD>韏?
|
||
2. **瘚贝<E7989A>餈<EFBFBD><E9A488><EFBFBD>芸鍳<E88AB8>?*嚗𡁜虾<F0A1819C>賢銁瘚贝<E7989A><E8B49D>臬<EFBFBD>撉諹<E69289>餈?
|
||
3. **靘肽<E99D98>隡𣳇<E99AA1>?*嚗𡁜<E59A97>隞硋<E99A9E>靘肽<E99D98>鈭<EFBFBD>ullMQ
|
||
|
||
**撱箄悅**嚗?
|
||
- <20>?靽萘<E99DBD>BullMQ靘肽<E99D98>嚗<EFBFBD>歇蝏誩<E89D8F>鋆<EFBFBD><E98B86>嚗?
|
||
- <20>?<3F>券𧫴畾?<3F>嗥凒<E597A5>乩蝙<E4B9A9>剁<EFBFBD><E58981>𣳇<EFBFBD><F0A3B387>齿鰵摰㕑<E691B0>嚗?
|
||
- <20>?憒<><E68692><EFBFBD><EFBFBD>𧒄銝滨鍂嚗䔶<E59A97>銝滨鍂<E6BBA8>𣳇膄嚗<E88684><E59A97>敶勗<E695B6><E58B97>扯<EFBFBD>嚗?
|
||
|
||
---
|
||
|
||
## 7. 撣貉<E692A3><E8B289>桅<EFBFBD> FAQ
|
||
|
||
### Q1嚗鑹edis蝻枏<E89DBB><E69E8F>朙edis<69>笔<EFBFBD><E7AC94>賢<EFBFBD><E8B3A2>嗡蝙<E597A1>典<EFBFBD>嚗?
|
||
**A1**嚗𡁜虾隞伐<E99A9E>摰<EFBFBD>賑雿輻鍂<E8BCBB>䔶<EFBFBD>銝析edis摰硺<E691B0>嚗䔶<E59A97><E494B6>臭<EFBFBD><E887AD>𣬚<EFBFBD><F0A3AC9A>唳旿蝏𤘪<E89D8F><F0A498AA>?
|
||
|
||
```
|
||
Redis摰硺<EFBFBD>嚗?56MB嚗?
|
||
<EFBFBD>鎿<EFBFBD> 蝻枏<E89DBB><E69E8F>唳旿嚗𠄎tring嚗㚁<E59A97><E39A81>删鍂 ~50MB
|
||
<EFBFBD>婙<EFBFBD> <20>笔<EFBFBD><E7AC94>唳旿嚗𡿨ist嚗㚁<E59A97><E39A81>删鍂 ~10MB
|
||
------------------------------------
|
||
<EFBFBD>餉恣嚗鰺60MB / 256MB = 23% 雿輻鍂<E8BCBB>?
|
||
```
|
||
|
||
### Q2嚗帋<E59A97><E5B88B>沖edis<69>笔<EFBFBD>嚗𣬚鍂<F0A3AC9A>唳旿摨㯄<E691A8><E3AF84>堒虾隞亙<E99A9E>嚗?
|
||
**A2**嚗𡁜虾隞乩<E99A9E>銝齿綫<E9BDBF>僐<EFBFBD>?
|
||
|
||
| <20>寞<EFBFBD> | 隡睃飵 | <20><>飵 |
|
||
|------|------|------|
|
||
| **Redis<69>笔<EFBFBD>** | 敹恬<E695B9>< 1ms嚗剹<E59A97><E589B9><EFBFBD><EFBFBD>賢<EFBFBD><E8B3A2>?| <20><>閬<EFBFBD>edis |
|
||
| **<2A>唳旿摨㯄<E691A8><E3AF84>?* | 銝漤<E98A9D>閬<EFBFBD><E996AC>憭碶<E686AD>韏?| <20>g<EFBFBD>> 10ms嚗剹<E59A97><E589B9><EFBFBD><EFBFBD>賜<EFBFBD><E8B39C>?|
|
||
|
||
<EFBFBD>典歇蝏讛揚銋唬<EFBFBD>Redis嚗<EFBFBD>遣霈桃凒<EFBFBD>亦鍂Redis<EFBFBD>笔<EFBFBD><EFBFBD>?
|
||
|
||
### Q3嚗𡁜<E59A97><F0A1819C>𨅯蘨<F0A885AF>舐鍂Redis蝻枏<E89DBB>嚗𣬚頂蝏煺<E89D8F><E785BA>厰䔮憸睃<E686B8>嚗?
|
||
**A3**嚗𡁶<E59A97><F0A181B6>笔<EFBFBD>銝滢<E98A9D><E6BBA2>匧之<E58CA7>桅<EFBFBD>嚗䔶<E59A97>摮睃銁憌𡡞埯<F0A1A19E>?
|
||
|
||
```
|
||
<EFBFBD>?<3F>臭誑甇<E8AA91>虜餈鞱<E9A488>嚗?
|
||
- LLM<4C>鞉𧋦<E99E89>批<EFBFBD> <20>?
|
||
- 憭𡁜<E686AD>靘讠<E99D98>摮睃<E691AE>鈭?<3F>?
|
||
|
||
<EFBFBD>𩤃<EFBFBD> 瞏𨅯銁憌𡡞埯嚗?
|
||
- <20>蹂遙<E8B982>∪虾<E288AA>賭腺憭梧<E686AD>摰硺<E691B0><E7A1BA>滚鍳嚗?
|
||
- <20>䭾<EFBFBD><E4ADBE>滩<EFBFBD>憭梯揖隞餃𦛚
|
||
- <20>冽<EFBFBD>雿㯄<E99BBF>銝滢蔔
|
||
```
|
||
|
||
### Q4嚗𡁜鍳<F0A1819C>沖edis<69>笔<EFBFBD><E7AC94>𠬍<EFBFBD><F0A0AC8D>賢炏<E8B3A2>鮋<EFBFBD><E9AE8B><EFBFBD>衽emoryQueue嚗?
|
||
**A4**嚗𡁜虾隞伐<E99A9E>靽格㺿<E6A0BC>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>喳虾<E596B3>?
|
||
|
||
```bash
|
||
# <20><>揢<EFBFBD>訌edis<69>笔<EFBFBD>
|
||
QUEUE_TYPE=redis
|
||
|
||
# <20>鮋<EFBFBD><E9AE8B><EFBFBD>啣<EFBFBD>摮㗛<E691AE><E3979B>?
|
||
QUEUE_TYPE=memory
|
||
```
|
||
|
||
雿<EFBFBD>釣<EFBFBD>𧶏<EFBFBD>**Redis銝剔<E98A9D><E58994>芸<EFBFBD><E88AB8>𣂷遙<F0A382B7>∩<EFBFBD>銝W仃**<2A>?
|
||
|
||
### Q5嚗鋳ullMQ<4D>曉郎<E69B89>梹<EFBFBD>
|
||
**A5**嚗帋<E59A97><E5B88B>橘<EFBFBD><E6A998>詨<EFBFBD>API<50>芣<EFBFBD>5銝芥<E98A9D>?
|
||
|
||
```typescript
|
||
// 1. <20>𥕦遣<F0A595A6>笔<EFBFBD>
|
||
const queue = new Queue('task');
|
||
|
||
// 2. 瘛餃<E7989B>隞餃𦛚
|
||
await queue.add('job', { data });
|
||
|
||
// 3. <20>𥕦遣Worker
|
||
const worker = new Worker('task', handler);
|
||
|
||
// 4. <20>穃𨯬鈭衤辣
|
||
worker.on('completed', ...);
|
||
worker.on('failed', ...);
|
||
|
||
// 5. <20>亥砭隞餃𦛚
|
||
const job = await queue.getJob(jobId);
|
||
```
|
||
|
||
憸<EFBFBD>恣摮虫<EFBFBD><EFBFBD>園𡢿嚗?*<2A>𠰴予**
|
||
|
||
---
|
||
|
||
## 8. <20>餌<EFBFBD>
|
||
|
||
### 8.1 <20>詨<EFBFBD>閬<EFBFBD><E996AC>
|
||
|
||
1. **Redis蝻枏<E89DBB> <20>?Redis<69>笔<EFBFBD>**
|
||
- <20>賣糓雿輻鍂<E8BCBB>䔶<EFBFBD>銝析edis摰硺<E691B0>
|
||
- <20>芣糓雿輻鍂<E8BCBB>孵<EFBFBD>銝滚<E98A9D>
|
||
|
||
2. **<2A>函<EFBFBD>蝟餌<E89D9F><E9A48C>啁𠶖**
|
||
- BullMQ撌脣<E6928C>鋆<EFBFBD><E98B86><EFBFBD>芯蝙<E88AAF>?
|
||
- 敶枏<E695B6><E69E8F>決emoryQueue嚗<65>䌊<EFBFBD>𥪜<EFBFBD>摮㗛<E691AE><E3979B>梹<EFBFBD>
|
||
- <20><>閬<EFBFBD>㺿<EFBFBD>䭾<EFBFBD><E4ADBE>賢鍳<E8B3A2>沖edis<69>笔<EFBFBD>
|
||
|
||
3. **<2A>刻<EFBFBD><E588BB>寞<EFBFBD>**
|
||
- <20>?<3F><>鍳<EFBFBD>沖edis蝻枏<E89DBB>嚗<EFBFBD>𧋦<EFBFBD>剁<EFBFBD>2憭抬<E686AD>
|
||
- <20>?<3F>滚鍳<E6BB9A>沖edis<69>笔<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>剁<EFBFBD>3憭抬<E686AD>
|
||
- <20>?皜鞱<E79A9C>撘誩<E69298><E8AAA9>踝<EFBFBD><E8B89D>滢<EFBFBD>憌𡡞埯
|
||
|
||
4. **<2A>芰鍂Redis蝻枏<E89DBB><E69E8F><EFBFBD>蔣<EFBFBD>?*
|
||
- <20>?<3F>臭誑閫<E8AA91><E996AB>LLM<4C>鞉𧋦<E99E89>桅<EFBFBD>
|
||
- <20>𩤃<EFBFBD> <20>蹂遙<E8B982>∪虾<E288AA>䭾<EFBFBD>找<EFBFBD><E689BE>厰<EFBFBD><E58EB0>?
|
||
- <20><> 撱箄悅嚗𡁏覔<F0A1818F>桃鍂<E6A183>瑁<EFBFBD>璅∪<E79285>摰𡁏糓<F0A1818F>血鍳<E8A180>券<EFBFBD><E588B8>?
|
||
|
||
5. **Redis<69>笔<EFBFBD><E7AC94><EFBFBD><EFBFBD><EFBFBD>?*
|
||
- <20>椬 憓𧼮<E68693>憭齿<E686AD>摨佗<E691A8>雿<EFBFBD>虾<EFBFBD>改<EFBFBD>
|
||
- <20>叚 靘肽<E99D98>Redis蝔喳<E89D94><E596B3>改<EFBFBD>擃睃虾<E79D83>函<EFBFBD>99.95%嚗?
|
||
- <20>?<3F>嗥<EFBFBD> > 憌𡡞埯
|
||
|
||
---
|
||
|
||
### 8.2 <20>喟<EFBFBD>撱箄悅
|
||
|
||
**憒<><E68692><EFBFBD>函<EFBFBD>蝟餌<E89D9F>皛∟雲隞乩<E99A9E><E4B9A9>∩辣銋衤<E98A8B>嚗<EFBFBD>遣霈桀偷敹怠鍳<E680A0>沖edis<69>笔<EFBFBD>嚗?*
|
||
|
||
```
|
||
<EFBFBD>?<3F>冽<EFBFBD><E586BD>?> 20
|
||
<EFBFBD>?SAE摰硺<E691B0><E7A1BA>?> 1
|
||
<EFBFBD>?<3F>寥<EFBFBD>隞餃𦛚憸𤑳<E686B8>嚗<EFBFBD><E59A97>憭?> 5銝迎<E98A9D>
|
||
<EFBFBD>?隞餃𦛚<E9A483>園鵭 > 10<31><30><EFBFBD>
|
||
<EFBFBD>?<3F>冽<EFBFBD><E586BD>望<EFBFBD>其遙<E585B6>∩腺憭?
|
||
```
|
||
|
||
**<EFBFBD>血<EFBFBD>嚗<EFBFBD>虾隞亙<EFBFBD><EFBFBD>舐鍂Redis蝻枏<EFBFBD>嚗屸<EFBFBD><EFBFBD>埈<EFBFBD>蝻瓐<EFBFBD>?*
|
||
|
||
---
|
||
|
||
**<EFBFBD><EFBFBD>﹝蝏湔擪<EFBFBD><EFBFBD><EFBFBD>** <20><><EFBFBD>臬𣪧<E887AC>?
|
||
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD>** 2025-12-12
|
||
**<EFBFBD>詨<EFBFBD><EFBFBD><EFBFBD>﹝嚗?* [Redis<69>寥<EFBFBD>惩<EFBFBD><E683A9>質恣<E8B3AA>哋(./04-Redis<69>寥<EFBFBD>惩<EFBFBD><E683A9>質恣<E8B3AA>?md)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|