# POST /v2/batch-accounting/optimize-memory

# Optimize Redis Memory

این اندپوینت عملیات بهینه‌سازی حافظه Redis را به صورت کامل و ساختاریافته انجام می‌دهد. هدف عملیات شامل: - اندازه‌گیری حافظه فعلی، - حذف کلیدهای غیرمعتبر، - اجرای فشرده‌سازی AOF از طریق `bgrewriteaof`, - و ارائه گزارش میزان حافظه آزادشده است. از آنجا که این عملیات می‌تواند بر عملکرد موقتی Redis اثر بگذارد، معمولاً در محیط‌های Production با احتیاط فراخوانی می‌شود.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fbatch-accou"><div class="endpoint-info"><div>**URL:** `/v2/batch-accounting/optimize-memory`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Middleware:** authWithJwt, shamsiDate</div></div></div>## Body Parameters

این اندپوینت هیچ ورودی ندارد.

<div class="api-docs" id="bkmrk-field-type-required-"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td colspan="4" style="text-align: center; color: #888;">No parameters</td></tr></tbody></table>

</div>## Request Example

```
POST /v2/batch-accounting/optimize-memory
{}
  
```

<div class="api-docs" id="bkmrk--1"></div>## Response (Success)

<div class="api-docs" id="bkmrk-field-type-descripti"><table class="schema-table"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>`success`</td><td>boolean</td><td>وضعیت کلی عملیات</td></tr><tr><td>`data.initial_memory`</td><td>integer</td><td>حجم حافظه Redis پیش از عملیات (بر حسب بایت)</td></tr><tr><td>`data.final_memory`</td><td>integer</td><td>حجم حافظه Redis پس از عملیات</td></tr><tr><td>`data.saved_memory`</td><td>integer</td><td>میزان حافظه آزادشده</td></tr><tr><td>`data.optimization_percentage`</td><td>float</td><td>درصد بهبود حافظه (saved\_memory / initial\_memory × 100)</td></tr><tr><td>`message`</td><td>string</td><td>پیام نهایی شامل درصد بهینه‌سازی</td></tr></tbody></table>

</div>```
{
  "success": true,
  "data": {
    "initial_memory": 183783424,
    "final_memory": 119013376,
    "saved_memory": 64770048,
    "optimization_percentage": 35.25
  },
  "message": "بهینه‌سازی کامل شد. 35.25% حافظه آزاد شد."
}
  
```

<div class="api-docs" id="bkmrk--2"></div>## Response (Server Error)

```
{
  "success": false,
  "message": "خطا در بهینه‌سازی: Internal server error..."
}
  
```

<div class="api-docs" id="bkmrk--3"></div>## Internal Architecture

<div class="api-docs" id="bkmrk-component-descriptio"><table class="schema-table"><thead><tr><th>Component</th><th>Description</th></tr></thead><tbody><tr><td>`getRedisMemoryUsage()`</td><td>استخراج مقدار مصرف حافظه Redis پیش از عملیات و پس از عملیات</td></tr><tr><td>`Redis::eval()`</td><td>اجرای اسکریپت Lua برای شمارش و حذف کلیدهای غیرمعتبر یا کلیدهایی که باید TTL داشته باشند. (در نسخه فعلی فقط بخش اسکلت حذف نوشته شده و قابل گسترش است.)</td></tr><tr><td>`Redis::bgrewriteaof()`</td><td>عملیات فشرده‌سازی AOF برای کاهش مصرف فضای دیسک و حافظه</td></tr><tr><td>`saved_memory`</td><td>اختلاف میان initial\_memory و final\_memory</td></tr><tr><td>`optimization_percentage`</td><td>محاسبه درصد بهینه‌سازی با فرمول دقیق round((saved / initial) × 100, 2)</td></tr></tbody></table>

</div>## Process Flow

<div class="api-docs" id="bkmrk-validate-jwt-token-%E2%86%93"><div class="flowchart"><div class="flow-item">Validate JWT Token</div><div class="flow-arrow">↓</div><div class="flow-item">Get Initial Memory Usage</div><div class="flow-arrow">↓</div><div class="flow-item">Execute Lua Script for Orphan/Invalid Keys</div><div class="flow-arrow">↓</div><div class="flow-item">Run Redis BGREWRITEAOF</div><div class="flow-arrow">↓</div><div class="flow-item">Measure Final Memory Usage</div><div class="flow-arrow">↓</div><div class="flow-item">Calculate Saved Memory &amp; Percentage</div><div class="flow-arrow">↓</div><div class="flow-item">Return Final JSON Report</div></div></div>