laravel自定义缓存memcache(自带memcached,windows不支持)

1、首先弄清楚memcache和memcached的区别(自行搜索)

2、安装memcache服务端(参照https://www.cnblogs.com/winstonsias/p/10190745.html)及php扩展(参照https://www.cnblogs.com/winstonsias/p/10193781.html)

3、添加服务提供类 MemcacheServiceProvider ,记得在app.php配置文件添加提供者注册

 1   namespace App\Providers;
 2
 3     use Cache;
 4     use App\Extensions\MemcacheStore;
 5     use Illuminate\Support\ServiceProvider;
 6
 7     class MemcacheServiceProvider extends ServiceProvider
 8     {
 9         public function boot()
10         {
11             Cache::extend(‘memcache‘, function ($app) {
12                 return Cache::repository(new MemcacheStore($app[‘memcache.connector‘]));
13             });
14         }
15
16         public function register()
17         {
18             //注册memcache连接的单例
19             $this->app->singleton(‘memcache.connector‘, function ($app) {
20                 $config = $app[‘config‘]["cache.stores.memcache"];
21                 $servers = $config[‘servers‘][0];
22                 return memcache_connect($servers[‘host‘], $servers[‘port‘]);
23             });
24         }
25
26
27     }

4、完善存储类MemcacheStore(可在app添加Extensions文件夹存放)

 1  namespace App\Extensions;
 2     class MemcacheStore implements \Illuminate\Contracts\Cache\Store
 3     {
 4         //memcache资源
 5         protected $memcache_conn;
 6         public  function __construct($conn)
 7         {
 8             $this->memcache_conn=$conn;
 9         }
10
11         public function __destruct()
12         {
13             // TODO: Implement __destruct() method.
14             $this->memcache_conn=null;//释放资源
15         }
16
17         public function get($key)
18         {
19             return $this->memcache_conn->get($key);
20         }
21
22         public function put($key, $value, $minutes)
23         {
24         }
25
26         public function increment($key, $value = 1)
27         {
28         }
29
30         public function decrement($key, $value = 1)
31         {
32         }
33
34         public function forever($key, $value)
35         {
36         }
37
38         public function forget($key)
39         {
40         }
41
42         public function flush()
43         {
44         }
45
46         public function getPrefix()
47         {
48         }
49
50         /**
51          * Retrieve multiple items from the cache by key.
52          *
53          * Items not found in the cache will have a null value.
54          *
55          * @param  array $keys
56          * @return array
57          */
58         public function many(array $keys)
59         {
60             // TODO: Implement many() method.
61         }
62
63         /**
64          * Store multiple items in the cache for a given number of minutes.
65          *
66          * @param  array $values
67          * @param  int $minutes
68          * @return void
69          */
70         public function putMany(array $values, $minutes)
71         {
72             // TODO: Implement putMany() method.
73         }
74     }

5、在cache.php配置文件中添加自定义缓存store

 1  /**
 2          * 自定义memcache,不用memcached by winston
 3          */
 4         ‘memcache‘ => [
 5             ‘driver‘ => ‘memcache‘,
 6             ‘servers‘ => [
 7                 [
 8                     ‘host‘ => env(‘MEMCACHED_HOST‘, ‘xx.xx.xx.xx‘),
 9                     ‘port‘ => env(‘MEMCACHED_PORT‘, 11211),
10                     ‘weight‘ => 100,
11                 ],
12             ],
13         ],

6、在控制器中使用

1  $val=Cache::store(‘memcache‘)->get(‘xxxx‘);
 

原文地址:https://www.cnblogs.com/winstonsias/p/10193804.html

时间: 2024-08-10 21:59:33

laravel自定义缓存memcache(自带memcached,windows不支持)的相关文章

自定义缓存Memcache 以及Cache

*****缓存存储配置项(读缓存和appsetting配直节点的问题 )***** MemCache经常用于数据不用经常改动的数据 不用每次都去数据库中读取,可以防止在系统的缓存中,缓存在内存中读取速度快,但是memcache(是可以分布的缓存)没有保存机制,服务器挂掉,memcache丢失 系统的配置节放在了appsettings配置节下  <add key=”mingzi” value=”assas” /> ConfigurationManager.appsetting[“mingzi”]

[nosql之缓存memcache]安装篇LInux for Windows

首先呢在PHP开发的过程中会用到很多缓存服务,从而提升访问质量或者临时存储一些数据. 优点 结构简单,读取速度快,易于维护.还有一些特性memcache redis mongodb都可以用来做为缓存用,但他们各自存在有着各自的优点和特性.今天来介绍下mamcache的安装和应用实例: memcache之windows篇: 下载地址:链接:http://pan.baidu.com/s/1o84cM6I 密码:ycyi 解压放入D盘下 mamcache目录下有一个memcache.exe文件,双击安

缓存、队列(Memcached、redis、RabbitMQ)

Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.List.Set.Sort Set 操作 管道 发布订阅 RabbitMQ 简介.安装.使用 使用 API 操作 RabbitMQ 消息不丢失 发布订阅 关键字发送 模糊匹配 一.Memcached 1.简介.安装.使用 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负

php5.4之分布式缓存memcache(windows7下安装配置)

一.安装memcache memcached在windows7上的安装问题 现在安装包:http://www.jb51.net/softs/44843.html   memcache的安装包 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d install 报错" failed to install service or service already installed" 解决方法: www.2cto.c

使用缓存Memcache存储更新微信access token

关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效. 公众号可以使用AppID和AppSecret调用本接口来获取access_token.AppID和App

192.168.62.124python运维开发(十一)----python操作缓存memcache、redis

内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装配置 #安装依赖包 yum install libeve

laravel 自定义分页 offset 和 limit 的使用

laravel 本身有一个自带的快速分页方法 paginate,只需要传入每页显示多少条数据就可以 了,但是如果想使用自定义从哪里开始呢,这时候就可以使用offset 和 limit 的组合,offset 设置从哪里开始,limit 设置想要查询多少条数据. Model::offset(10)->limit(10)->get() 上面的代码表示查询出第11-20条数据. 百牛信息技术bainiu.ltd发布与博客园

PHP memcache扩展安装 for Windows

一.下载并安装memcached服务器端软件    1.下载memcached软件 32位下载地址: memcached-win32-1.4.4-14.zip(直接下载),memcached-win32-1.4.4-14.zip下载页面:http://blog.couchbase.com/memcached-144-windows-32-bit-binary-now-available 64位下载地址:memcached-win64-1.4.4-14.zip(直接下载),memcached-wi

实现一个简单的缓存模块&#183;续, 添加Memcached调用实现

jusfr 原创,转载请注明来自博客园. 在之前的实现中,我们初步实现了一个缓存模块:包含一个基于Http请求的缓存实现,一个基于HttpRuntime.Cache进程级的缓存实现,但观察代码,会发现如下问题: 1. 有部分逻辑如 Boolean TryGet<T>(String key, out T entry) 的实现有重复现象,Do not repeat yourself 提醒我们这里可以改进:2. 分区特性虽然实现了,但是使用了额外的接口承载,而大多数运用中,调用者无论是操作缓存项的创