216.73.216.168 TODAY : 4,271

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 6์ฃผ์ฐจ: ์บ์‹ฑ (Caching) ์ „๋žต - 02 ํ”„๋ ˆ์ž„์›Œํฌ ์บ์‹ฑ ์‹œ์Šคํ…œ ํ™œ์šฉ

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 6์ฃผ์ฐจ: ์บ์‹ฑ (Caching) ์ „๋žต - 02 ํ”„๋ ˆ์ž„์›Œํฌ ์บ์‹ฑ ์‹œ์Šคํ…œ ํ™œ์šฉ
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-09-14 16:21:30
์กฐํšŒ์ˆ˜ 1
- ์„ค๋ช…

ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์บ์‹ฑ์˜ ์ค‘์š”์„ฑ


๋Œ€๋ถ€๋ถ„์˜ ํ˜„๋Œ€์ ์ธ #PHP #ํ”„๋ ˆ์ž„์›Œํฌ (์˜ˆ: #Laravel, #Symfony)๋Š” ์ž์ฒด์ ์œผ๋กœ ๊ฐ•๋ ฅํ•œ #์บ์‹ฑ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์บ์‹ฑ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•œ ์บ์‹ฑ ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด, ๊ฐ„๋‹จํ•œ API๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์บ์‹ฑ ๋“œ๋ผ์ด๋ฒ„(#Redis, #Memcached, ํŒŒ์ผ ๋“ฑ)๋ฅผ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค.



Laravel์˜ ์บ์‹ฑ ์‹œ์Šคํ…œ

uploadImage

#Laravel ์˜ ์บ์‹ฑ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•˜๋‹ค. .env ํŒŒ์ผ์ด๋‚˜ config/cache.php ํŒŒ์ผ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์บ์‹ฑ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์บ์‹ฑ ๋“œ๋ผ์ด๋ฒ„๋Š” Redis์™€ Memcached์ด๋‹ค.



์บ์‹œ ์‚ฌ์šฉ ์˜ˆ์ œ


Laravel์—์„œ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. Cache ํŒŒ์‚ฌ๋“œ(Facade)๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์บ์‹œ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

PHP

<?php
use IlluminateSupportFacadesCache;
 
// ๋ฐ์ดํ„ฐ ์บ์‹œ ์ €์žฅ (10๋ถ„ ์œ ํšจ)
$users = Cache::remember('users_list', 600, function () {
    return AppModelsUser::all();
});
 
// ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
$value = Cache::get('key');
 
// ๋ฐ์ดํ„ฐ ์บ์‹œ ์ €์žฅ (๋ฌด๊ธฐํ•œ)
Cache::forever('forever_key', 'value');
 
// ์บ์‹œ์—์„œ ํŠน์ • ํ‚ค ์‚ญ์ œ
Cache::forget('key');
 
// ๋ชจ๋“  ์บ์‹œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
Cache::flush();
?>

  • Cache::remember()๋Š” ๊ฐ€์žฅ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์บ์‹œ์— ํ•ด๋‹น ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์—†์œผ๋ฉด ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ํด๋กœ์ €(Closure)๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ์บ์‹œ์— ์ €์žฅํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.



Symfony์˜ ์บ์‹ฑ ์‹œ์Šคํ…œ


#Symfony ์—ญ์‹œ ์œ ์—ฐํ•œ ์บ์‹ฑ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค. symfony/cache ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹ฑ์„ ๊ตฌํ˜„ํ•œ๋‹ค. Symfony์˜ ์บ์‹ฑ์€ PSR-6 ๋ฐ PSR-16 ์บ์‹ฑ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜์—ฌ, ๋‹ค๋ฅธ ์บ์‹ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.



์บ์‹œ ์‚ฌ์šฉ ์˜ˆ์ œ


Symfony์—์„œ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋จผ์ € CacheInterface๋ฅผ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.

PHP

<?php
namespace AppController;
 
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyContractsCacheCacheInterface;
use SymfonyComponentCacheCacheItem;
 
class ProductController extends AbstractController
{
    public function show(CacheInterface $cache)
    {
        $productId = 1;
        
        $product = $cache->get('product_' . $productId, function (CacheItem $item) {
            $item->expiresAfter(3600); // 1์‹œ๊ฐ„ ์œ ํšจ
 
            // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ œํ’ˆ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
            return ['id' => 1, 'name' => 'Laptop', 'price' => 1200];
        });
        
        // ... ์ œํ’ˆ ์ •๋ณด ์‚ฌ์šฉ
    }
}
?>

  • Symfony์˜ ์บ์‹ฑ์€ #PSR ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฏ€๋กœ, get() ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ธ์ž๋กœ CacheItem ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„ ์œ ํšจ๊ธฐ๊ฐ„ ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.



์š”์•ฝ


#PHPํ”„๋ ˆ์ž„์›Œํฌ ๋Š” ๋‚ด์žฅ๋œ #์บ์‹ฑ์‹œ์Šคํ…œ ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์บ์‹ฑ ๋กœ์ง์„ ์ถ”์ƒํ™”ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์†์‰ฝ๊ฒŒ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. #Laravel ์ด๋‚˜ #Symfony ์™€ ๊ฐ™์€ ์ฃผ์š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด, #์œ ์ง€๋ณด์ˆ˜ ๊ฐ€ ์šฉ์ดํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋„˜์–ด, ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์„œ๋น„์Šค ์šด์˜์˜ ํ•ต์‹ฌ์ด ๋œ๋‹ค.


PHP ํ”„๋ ˆ์ž„์›Œํฌ Laravel Symfony ์บ์‹ฑ ์บ์‹ฑ์‹œ์Šคํ…œ Redis Memcached PSR ์œ ์ง€๋ณด์ˆ˜



๊ฒŒ์ž„, ๋งˆ์ผ€ํŒ…, ์„œ๋ฒ„์šฉ ๊ณ ์ •IP, ๋ฐฉํ™”๋ฒฝ์šฐํšŒ, ๊นจ๋—ํ•˜๊ณ  ์ค‘๋ณต์—†๋Š” IP ์ œ๊ณต.

https://xn--299ao67b9qbmsf04c.net/