How to use memcached or redis with slim 3
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
add a comment |
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
Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3
– informer
Jul 20 '17 at 7:26
When you sayuse 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
add a comment |
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
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
php redis memcached slim-3
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 sayuse 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
add a comment |
Try this, for slim 2: gist.github.com/hising/ddece8c92bcd09df83fdcf9890fc0dd3
– informer
Jul 20 '17 at 7:26
When you sayuse 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
add a comment |
2 Answers
2
active
oldest
votes
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();
});
add a comment |
$memcached = new Memcached();
$memcached->addServer($cachedHost, $cachedPort);
$metadataCache = new DoctrineCommonCacheMemcachedCache();
$metadataCache->setMemcached($memcached);
$queryCache = new DoctrineCommonCacheMemcachedCache();
$queryCache->setMemcached($memcached);
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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();
});
add a comment |
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();
});
add a comment |
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();
});
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();
});
answered Jul 20 '17 at 15:42
NimaNima
1,52341626
1,52341626
add a comment |
add a comment |
$memcached = new Memcached();
$memcached->addServer($cachedHost, $cachedPort);
$metadataCache = new DoctrineCommonCacheMemcachedCache();
$metadataCache->setMemcached($memcached);
$queryCache = new DoctrineCommonCacheMemcachedCache();
$queryCache->setMemcached($memcached);
add a comment |
$memcached = new Memcached();
$memcached->addServer($cachedHost, $cachedPort);
$metadataCache = new DoctrineCommonCacheMemcachedCache();
$metadataCache->setMemcached($memcached);
$queryCache = new DoctrineCommonCacheMemcachedCache();
$queryCache->setMemcached($memcached);
add a comment |
$memcached = new Memcached();
$memcached->addServer($cachedHost, $cachedPort);
$metadataCache = new DoctrineCommonCacheMemcachedCache();
$metadataCache->setMemcached($memcached);
$queryCache = new DoctrineCommonCacheMemcachedCache();
$queryCache->setMemcached($memcached);
$memcached = new Memcached();
$memcached->addServer($cachedHost, $cachedPort);
$metadataCache = new DoctrineCommonCacheMemcachedCache();
$metadataCache->setMemcached($memcached);
$queryCache = new DoctrineCommonCacheMemcachedCache();
$queryCache->setMemcached($memcached);
edited Nov 21 '18 at 15:29
Blacksilver
7071222
7071222
answered Nov 21 '18 at 15:12
dnitadnita
1
1
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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