How to use memcached or redis with slim 3












1















I browsed the internet and didn't find much content on how to use any caching library with slim 3 framework.
Can anyone help me out on this issue as soon as poosible?










share|improve this question























  • Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

    – informer
    Jul 20 '17 at 7:26











  • When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

    – Nima
    Jul 20 '17 at 9:07











  • It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

    – Ayush28
    Jul 20 '17 at 10:12













  • Can you guide me how to use caching manually @Nima

    – Ayush28
    Jul 20 '17 at 11:15


















1















I browsed the internet and didn't find much content on how to use any caching library with slim 3 framework.
Can anyone help me out on this issue as soon as poosible?










share|improve this question























  • Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

    – informer
    Jul 20 '17 at 7:26











  • When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

    – Nima
    Jul 20 '17 at 9:07











  • It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

    – Ayush28
    Jul 20 '17 at 10:12













  • Can you guide me how to use caching manually @Nima

    – Ayush28
    Jul 20 '17 at 11:15
















1












1








1


0






I browsed the internet and didn't find much content on how to use any caching library with slim 3 framework.
Can anyone help me out on this issue as soon as poosible?










share|improve this question














I browsed the internet and didn't find much content on how to use any caching library with slim 3 framework.
Can anyone help me out on this issue as soon as poosible?







php redis memcached slim-3






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jul 20 '17 at 7:21









Ayush28Ayush28

5911




5911













  • Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

    – informer
    Jul 20 '17 at 7:26











  • When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

    – Nima
    Jul 20 '17 at 9:07











  • It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

    – Ayush28
    Jul 20 '17 at 10:12













  • Can you guide me how to use caching manually @Nima

    – Ayush28
    Jul 20 '17 at 11:15





















  • Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

    – informer
    Jul 20 '17 at 7:26











  • When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

    – Nima
    Jul 20 '17 at 9:07











  • It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

    – Ayush28
    Jul 20 '17 at 10:12













  • Can you guide me how to use caching manually @Nima

    – Ayush28
    Jul 20 '17 at 11:15



















Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

– informer
Jul 20 '17 at 7:26





Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3

– informer
Jul 20 '17 at 7:26













When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

– Nima
Jul 20 '17 at 9:07





When you say use a caching library with slim 3 you mean you want to add a caching library to your application and then get help from the framework? I use caching in my slim 3 applications but I use it manually wherever I see fit, no special treatment from slim. I mean I generate unique cache-keys myself, check if the item is in the pool, etc. I can help if you give some more information.

– Nima
Jul 20 '17 at 9:07













It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

– Ayush28
Jul 20 '17 at 10:12







It would be wonderful to get some information on using caching in a project from you @Nima (using cache for the first time). How can I use caching with or without any library ?

– Ayush28
Jul 20 '17 at 10:12















Can you guide me how to use caching manually @Nima

– Ayush28
Jul 20 '17 at 11:15







Can you guide me how to use caching manually @Nima

– Ayush28
Jul 20 '17 at 11:15














2 Answers
2






active

oldest

votes


















7














I use symfony/cache with Slim 3. You can use any other cache library, but I give an example setup for this specific library. And I should mention, this is actually independent of Slim or any other framework.



First you need to include this library in your project, I recommend using composer. I also will iinclude predis/predis to be able to use Redis adapter:



composer require symfony/cache predis/predis



Then I'll use Dependency Injection Container to setup cache pool to make it available to other objects which need to use caching features:



// If you created your project using slim skeleton app
// this should probably be placed in depndencies.php
$container['cache'] = function ($c) {
$config = [
'schema' => 'tcp',
'host' => 'localhost',
'port' => 6379,
// other options
];
$connection = new PredisClient($config);
return new SymfonyComponentCacheAdapterRedisAdapter($connection);
}


Now you have a cache item pool in $container['cache'] which has methods defined in PSR-6.



Here is a sample code using it:



class SampleClass {

protected $cache;
public function __construct($cache) {
$this->cache = $cache;
}

public function doSomething() {
$item = $this->cache->getItem('unique-cache-key');
if ($item->isHit()) {
return 'I was previously called at ' . $item->get();
}
else {
$item->set(time());
$item->expiresAfter(3600);
$this->cache->save($item);

return 'I am being called for the first time, I will return results from cache for the next 3600 seconds.';
}
}
}


Now when you want to create new instance of SampleClass you should pass this cache item pool from the DIC, for example in a route callback:



$app->get('/foo', function (){
$bar = new SampleClass($this->get('cache'));
return $bar->doSomething();
});





share|improve this answer































    0














    $memcached = new Memcached();

    $memcached->addServer($cachedHost, $cachedPort);

    $metadataCache = new DoctrineCommonCacheMemcachedCache();
    $metadataCache->setMemcached($memcached);

    $queryCache = new DoctrineCommonCacheMemcachedCache();
    $queryCache->setMemcached($memcached);





    share|improve this answer


























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45207970%2fhow-to-use-memcached-or-redis-with-slim-3%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      7














      I use symfony/cache with Slim 3. You can use any other cache library, but I give an example setup for this specific library. And I should mention, this is actually independent of Slim or any other framework.



      First you need to include this library in your project, I recommend using composer. I also will iinclude predis/predis to be able to use Redis adapter:



      composer require symfony/cache predis/predis



      Then I'll use Dependency Injection Container to setup cache pool to make it available to other objects which need to use caching features:



      // If you created your project using slim skeleton app
      // this should probably be placed in depndencies.php
      $container['cache'] = function ($c) {
      $config = [
      'schema' => 'tcp',
      'host' => 'localhost',
      'port' => 6379,
      // other options
      ];
      $connection = new PredisClient($config);
      return new SymfonyComponentCacheAdapterRedisAdapter($connection);
      }


      Now you have a cache item pool in $container['cache'] which has methods defined in PSR-6.



      Here is a sample code using it:



      class SampleClass {

      protected $cache;
      public function __construct($cache) {
      $this->cache = $cache;
      }

      public function doSomething() {
      $item = $this->cache->getItem('unique-cache-key');
      if ($item->isHit()) {
      return 'I was previously called at ' . $item->get();
      }
      else {
      $item->set(time());
      $item->expiresAfter(3600);
      $this->cache->save($item);

      return 'I am being called for the first time, I will return results from cache for the next 3600 seconds.';
      }
      }
      }


      Now when you want to create new instance of SampleClass you should pass this cache item pool from the DIC, for example in a route callback:



      $app->get('/foo', function (){
      $bar = new SampleClass($this->get('cache'));
      return $bar->doSomething();
      });





      share|improve this answer




























        7














        I use symfony/cache with Slim 3. You can use any other cache library, but I give an example setup for this specific library. And I should mention, this is actually independent of Slim or any other framework.



        First you need to include this library in your project, I recommend using composer. I also will iinclude predis/predis to be able to use Redis adapter:



        composer require symfony/cache predis/predis



        Then I'll use Dependency Injection Container to setup cache pool to make it available to other objects which need to use caching features:



        // If you created your project using slim skeleton app
        // this should probably be placed in depndencies.php
        $container['cache'] = function ($c) {
        $config = [
        'schema' => 'tcp',
        'host' => 'localhost',
        'port' => 6379,
        // other options
        ];
        $connection = new PredisClient($config);
        return new SymfonyComponentCacheAdapterRedisAdapter($connection);
        }


        Now you have a cache item pool in $container['cache'] which has methods defined in PSR-6.



        Here is a sample code using it:



        class SampleClass {

        protected $cache;
        public function __construct($cache) {
        $this->cache = $cache;
        }

        public function doSomething() {
        $item = $this->cache->getItem('unique-cache-key');
        if ($item->isHit()) {
        return 'I was previously called at ' . $item->get();
        }
        else {
        $item->set(time());
        $item->expiresAfter(3600);
        $this->cache->save($item);

        return 'I am being called for the first time, I will return results from cache for the next 3600 seconds.';
        }
        }
        }


        Now when you want to create new instance of SampleClass you should pass this cache item pool from the DIC, for example in a route callback:



        $app->get('/foo', function (){
        $bar = new SampleClass($this->get('cache'));
        return $bar->doSomething();
        });





        share|improve this answer


























          7












          7








          7







          I use symfony/cache with Slim 3. You can use any other cache library, but I give an example setup for this specific library. And I should mention, this is actually independent of Slim or any other framework.



          First you need to include this library in your project, I recommend using composer. I also will iinclude predis/predis to be able to use Redis adapter:



          composer require symfony/cache predis/predis



          Then I'll use Dependency Injection Container to setup cache pool to make it available to other objects which need to use caching features:



          // If you created your project using slim skeleton app
          // this should probably be placed in depndencies.php
          $container['cache'] = function ($c) {
          $config = [
          'schema' => 'tcp',
          'host' => 'localhost',
          'port' => 6379,
          // other options
          ];
          $connection = new PredisClient($config);
          return new SymfonyComponentCacheAdapterRedisAdapter($connection);
          }


          Now you have a cache item pool in $container['cache'] which has methods defined in PSR-6.



          Here is a sample code using it:



          class SampleClass {

          protected $cache;
          public function __construct($cache) {
          $this->cache = $cache;
          }

          public function doSomething() {
          $item = $this->cache->getItem('unique-cache-key');
          if ($item->isHit()) {
          return 'I was previously called at ' . $item->get();
          }
          else {
          $item->set(time());
          $item->expiresAfter(3600);
          $this->cache->save($item);

          return 'I am being called for the first time, I will return results from cache for the next 3600 seconds.';
          }
          }
          }


          Now when you want to create new instance of SampleClass you should pass this cache item pool from the DIC, for example in a route callback:



          $app->get('/foo', function (){
          $bar = new SampleClass($this->get('cache'));
          return $bar->doSomething();
          });





          share|improve this answer













          I use symfony/cache with Slim 3. You can use any other cache library, but I give an example setup for this specific library. And I should mention, this is actually independent of Slim or any other framework.



          First you need to include this library in your project, I recommend using composer. I also will iinclude predis/predis to be able to use Redis adapter:



          composer require symfony/cache predis/predis



          Then I'll use Dependency Injection Container to setup cache pool to make it available to other objects which need to use caching features:



          // If you created your project using slim skeleton app
          // this should probably be placed in depndencies.php
          $container['cache'] = function ($c) {
          $config = [
          'schema' => 'tcp',
          'host' => 'localhost',
          'port' => 6379,
          // other options
          ];
          $connection = new PredisClient($config);
          return new SymfonyComponentCacheAdapterRedisAdapter($connection);
          }


          Now you have a cache item pool in $container['cache'] which has methods defined in PSR-6.



          Here is a sample code using it:



          class SampleClass {

          protected $cache;
          public function __construct($cache) {
          $this->cache = $cache;
          }

          public function doSomething() {
          $item = $this->cache->getItem('unique-cache-key');
          if ($item->isHit()) {
          return 'I was previously called at ' . $item->get();
          }
          else {
          $item->set(time());
          $item->expiresAfter(3600);
          $this->cache->save($item);

          return 'I am being called for the first time, I will return results from cache for the next 3600 seconds.';
          }
          }
          }


          Now when you want to create new instance of SampleClass you should pass this cache item pool from the DIC, for example in a route callback:



          $app->get('/foo', function (){
          $bar = new SampleClass($this->get('cache'));
          return $bar->doSomething();
          });






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jul 20 '17 at 15:42









          NimaNima

          1,52341626




          1,52341626

























              0














              $memcached = new Memcached();

              $memcached->addServer($cachedHost, $cachedPort);

              $metadataCache = new DoctrineCommonCacheMemcachedCache();
              $metadataCache->setMemcached($memcached);

              $queryCache = new DoctrineCommonCacheMemcachedCache();
              $queryCache->setMemcached($memcached);





              share|improve this answer






























                0














                $memcached = new Memcached();

                $memcached->addServer($cachedHost, $cachedPort);

                $metadataCache = new DoctrineCommonCacheMemcachedCache();
                $metadataCache->setMemcached($memcached);

                $queryCache = new DoctrineCommonCacheMemcachedCache();
                $queryCache->setMemcached($memcached);





                share|improve this answer




























                  0












                  0








                  0







                  $memcached = new Memcached();

                  $memcached->addServer($cachedHost, $cachedPort);

                  $metadataCache = new DoctrineCommonCacheMemcachedCache();
                  $metadataCache->setMemcached($memcached);

                  $queryCache = new DoctrineCommonCacheMemcachedCache();
                  $queryCache->setMemcached($memcached);





                  share|improve this answer















                  $memcached = new Memcached();

                  $memcached->addServer($cachedHost, $cachedPort);

                  $metadataCache = new DoctrineCommonCacheMemcachedCache();
                  $metadataCache->setMemcached($memcached);

                  $queryCache = new DoctrineCommonCacheMemcachedCache();
                  $queryCache->setMemcached($memcached);






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 21 '18 at 15:29









                  Blacksilver

                  7071222




                  7071222










                  answered Nov 21 '18 at 15:12









                  dnitadnita

                  1




                  1






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45207970%2fhow-to-use-memcached-or-redis-with-slim-3%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Guess what letter conforming each word

                      Port of Spain

                      Run scheduled task as local user group (not BUILTIN)