Files
AIclinicalresearch/docs/07-运维文档/05-Redis缓存与队列的区别说明.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
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%)
2026-01-14 19:15:01 +08:00

746 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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><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>憪贝蔭霂<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>滚鍳銝
- <20><EFBFBD><E4ADBE><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><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>隞餃𦛚銝
<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><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>仃**<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)