forked from hesabix/arc
4.7 KiB
Executable file
4.7 KiB
Executable file
مدیریت تنظیمات Redis از طریق پنل ادمین
این مستند راهنمای استفاده از بخش مدیریت تنظیمات Redis در پنل ادمین است.
دسترسی
برای دسترسی به تنظیمات Redis، نیاز به مجوز system_settings یا superadmin دارید.
Endpoint ها
1. دریافت تنظیمات Redis
GET /api/v1/admin/system-settings/redis
دریافت تنظیمات فعلی Redis شامل:
enabled: فعال/غیرفعال بودن Redishost: آدرس سرور Redisport: پورت Redisdb: شماره دیتابیس Redis (0-15)password: رمز عبور (برای امنیت نمایش داده نمیشود)
مثال پاسخ:
{
"success": true,
"data": {
"enabled": true,
"host": "localhost",
"port": 6379,
"db": 0,
"password": "***"
}
}
2. بهروزرسانی تنظیمات Redis
PUT /api/v1/admin/system-settings/redis
Body:
{
"enabled": true,
"host": "localhost",
"port": 6379,
"db": 0,
"password": "your_password_here"
}
نکات مهم:
- تمام فیلدها اختیاری هستند
- برای حذف password، مقدار خالی
""ارسال کنید - تغییرات به صورت خودکار اعمال میشوند (نیاز به restart نیست)
- بعد از تغییرات، اتصال Redis به صورت خودکار تست میشود
مثال پاسخ:
{
"success": true,
"message": "REDIS_CONFIGURATION_UPDATED",
"data": {
"enabled": true,
"host": "localhost",
"port": 6379,
"db": 0,
"password": "***",
"connection_status": "connected"
}
}
3. تست اتصال Redis
POST /api/v1/admin/system-settings/redis/test
تست اتصال به Redis با تنظیمات فعلی و برگرداندن اطلاعات سرور.
مثال پاسخ موفق:
{
"success": true,
"data": {
"connected": true,
"message": "Redis connection successful",
"redis_version": "7.0.0",
"used_memory": "2.5M",
"test_passed": true
}
}
مثال پاسخ ناموفق:
{
"success": true,
"data": {
"connected": false,
"message": "Redis is disabled or connection failed"
}
}
استفاده در Frontend
مثال با Flutter/Dart
// دریافت تنظیمات
Future<Map<String, dynamic>> getRedisSettings() async {
final res = await apiClient.get('/api/v1/admin/system-settings/redis');
return res.data['data'];
}
// بهروزرسانی تنظیمات
Future<Map<String, dynamic>> updateRedisSettings({
bool? enabled,
String? host,
int? port,
int? db,
String? password,
}) async {
final res = await apiClient.put(
'/api/v1/admin/system-settings/redis',
data: {
if (enabled != null) 'enabled': enabled,
if (host != null) 'host': host,
if (port != null) 'port': port,
if (db != null) 'db': db,
if (password != null) 'password': password,
},
);
return res.data['data'];
}
// تست اتصال
Future<Map<String, dynamic>> testRedisConnection() async {
final res = await apiClient.post('/api/v1/admin/system-settings/redis/test');
return res.data['data'];
}
نکات امنیتی
- Password: رمز عبور Redis در پاسخها نمایش داده نمیشود (با
***نشان داده میشود) - HTTPS: در production حتماً از HTTPS استفاده کنید
- Permissions: فقط کاربران با مجوز
system_settingsیاsuperadminمیتوانند تنظیمات را تغییر دهند
عیبیابی
مشکل: اتصال برقرار نمیشود
-
بررسی کنید که Redis service در حال اجرا باشد:
sudo systemctl status redis-server -
بررسی firewall:
sudo ufw allow 6379 -
تست اتصال از command line:
redis-cli -h localhost -p 6379 ping
مشکل: تغییرات اعمال نمیشوند
- از endpoint
/redis/testبرای تست اتصال استفاده کنید - بررسی لاگهای سرور برای خطاهای Redis
- در صورت نیاز، سرویس را restart کنید
اولویت تنظیمات
تنظیمات Redis به ترتیب اولویت زیر خوانده میشوند:
- Database (System Settings): تنظیمات ذخیره شده در دیتابیس (اولویت اول)
- Environment Variables: تنظیمات در فایل
.env(fallback)
این به شما امکان میدهد تنظیمات را از طریق پنل ادمین تغییر دهید بدون نیاز به تغییر فایل .env.