> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 内存存储

# 内存存储

为了在会话和执行周期之间持久化记忆，请将记忆存储在数据库等持久化存储中。

如果您在生产环境中使用 Memory，持久化存储至关重要，因为您希望在应用程序重启时保留用户的记忆。

Agno 的内存系统支持多种持久化存储选项。

## 存储选项

Memory 类通过可插入的数据库接口支持不同的后端存储选项。目前，Agno 提供：

1. [SQLite 存储](/reference/memory/storage/sqlite)
2. [PostgreSQL 存储](/reference/memory/storage/postgres)
3. [MongoDB 存储](/reference/memory/storage/mongo)
4. [Redis 存储](/reference/memory/storage/redis)

## 设置存储

要配置内存存储，您需要创建一个数据库实例并将其传递给 Memory 的构造函数：

```python theme={null}
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb

# 为内存创建 SQLite 数据库
memory_db = SqliteMemoryDb(
    table_name="memories",  # 要使用的表名
    db_file="path/to/memory.db"  # SQLite 数据库文件
)

# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)
```

## 数据模型

在使用持久化存储时，Memory 系统存储：

* **用户记忆** - 关于用户的が事实和见解
* **最后更新时间戳** - 用于跟踪记忆上次修改的时间
* **记忆 ID** - 每个记忆的唯一标识符

## 存储示例

```python sqlite_memory.py theme={null}
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.schema import UserMemory

# 创建一个 SQLite 内存数据库
memory_db = SqliteMemoryDb(
    table_name="user_memories",
    db_file="tmp/memory.db"
)

# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)

# 添加一个将在重启后持久化的用户记忆
user_id = "user@example.com"
memory.add_user_memory(
    memory=UserMemory(
        memory="用户在应用程序中偏好深色模式",
        topics=["preferences", "ui"]
    ),
    user_id=user_id
)

# 检索记忆（将从数据库加载）
user_memories = memory.get_user_memories(user_id=user_id)
for m in user_memories:
    print(f"Memory: {m.memory}")
    print(f"Topics: {m.topics}")
    print(f"Last Updated: {m.last_updated}")
```

```python postgres_memory.py theme={null}
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.postgres import PostgresMemoryDb
from agno.memory.v2.schema import UserMemory

# 创建一个 PostgreSQL 内存数据库
memory_db = PostgresMemoryDb(
    table_name="user_memories",
    connection_string="postgresql://user:password@localhost:5432/mydb"
)

# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)

# 添加用户记忆
user_id = "user@example.com"
memory.add_user_memory(
    memory=UserMemory(
        memory="用户拥有高级订阅",
        topics=["subscription", "account"]
    ),
    user_id=user_id
)

# 无论后端如何，内存操作都保持不变
print(f"用户存储了 {len(memory.get_user_memories(user_id=user_id))} 条记忆")
```

## 与 Agent 存储集成

在构建具有内存的代理时，您通常需要存储代理会话和记忆。Agno 通过允许您配置两个存储系统，使此过程变得容易：

```python theme={null}
from agno.agent import Agent
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.models.openai import OpenAIChat
from agno.storage.sqlite import SqliteStorage

# 创建内存存储
memory_db = SqliteMemoryDb(
    table_name="memories",
    db_file="tmp/memory.db"
)
memory = Memory(db=memory_db)

# 创建代理存储
agent_storage = SqliteStorage(
    table_name="agent_sessions",
    db_file="tmp/agent_storage.db"
)

# 使用内存和存储创建代理
agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    memory=memory,
    storage=agent_storage,
    enable_user_memories=True,
)
```

## 内存管理

在使用持久化存储时，Memory 系统提供了多个函数来管理存储的记忆：

```python theme={null}
# 删除特定记忆
memory.delete_user_memory(user_id="user@example.com", memory_id="memory_123")

# 替换/更新记忆
memory.replace_user_memory(
    memory_id="memory_123",
    memory=UserMemory(memory="关于用户的更新信息"),
    user_id="user@example.com"
)

# 清除所有记忆
memory.clear()
```

## 开发者资源

* 在此处查找内存存储的参考文档：[here](/reference/memory/storage)
