Docker笔记二:Lumen & Redis
Lumen 基于 Laravel 打造,专为构建微服务和 APIs 而生;Redis 与 Memcached 均为常用的 key-value 内存对象缓存服务(系统),免费开源,Redis 支持持久化,但Memcached 不支持持久化。Redis 与 Memcached 均可进行集群化部署, Lumen 已对这两种系统API进行了很好的封装,使用起来更为简便。Lumen 中使用Redis可通过Predis或者PhpRedis来实现。Predis为Lumen原生支持的库,PhpRedis是PHP的C扩展,性能更高,但Lumen缺乏原生支持。
一. Redis的Docker部署
- 创建Dockerfile-Redis:
FROM ubuntu MAINTAINER cenze <272666745@qq.com> RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ADD conf/sources.list /etc/apt/ RUN apt-get update \ && apt-get install -y gcc make vim ENV PKGS="/usr/local/pkgs" ADD packages/redis-3.2.8.tar.gz $PKGS/ # install redis ENV PREFIX_REDIS="/usr/local/redis" WORKDIR $PKGS/redis-3.2.8 RUN make \ && make PREFIX=$PREFIX_REDIS install \ && cp redis.conf $PREFIX_REDIS/ \ && cp src/redis-trib.rb $PREFIX_REDIS/bin/ VOLUME ["/data"] ENV PATH $PREFIX_REDIS/bin:$PATH EXPOSE 6379 CMD ["redis-server","/usr/local/redis/redis.conf"]
- 注意事项:
- redis.conf中注销行 bind 127.0.0.1 或明确绑定 IP地址集,其他容器才可访问
- redis.conf中若未设置密码,可能需设置 protected-mode 为 no以关闭保护模式,protected-mode 默认值为 yes
- 安装目录的bin下有个redis-cli可拷到其他容器中作为命令行接口来连接管理redis服务端
- 卷/data用于缓存数据对象的持久化存储目录
- build镜像:sudo docker build -t cenze/redis -f Dockerfile-Redis .
- run容器:sudo docker run -d --name redis cenze/redis
- redis-cli测试部署
root@60c9de8c01a0:/usr/local/pkgs/redis-3.2.8# redis-cli 127.0.0.1:6379> set cache redis OK 127.0.0.1:6379> get cache "redis" 127.0.0.1:6379>
( 该链接可供参考: https://github.com/dockerfile/redis/blob/master/Dockerfile )
二.创建Lumen项目
用composer创建Lumen无法以 root/super 用户来运行,所以需要切换到其他用户环境,比如本人会运行如下命令su - www-data export PATH=/usr/local/php/bin:$PATH (这一条最好写进www-data的Home下的.profile, composer依赖PHP来运行) composer create-project --prefer-dist laravel/lumen lumen
修改lumen下.env中参数配置:
APP_ENV=local APP_DEBUG=true APP_KEY=dsa560943980dggjodpg APP_TIMEZONE=Asia/Shanghai DB_CONNECTION=mysql DB_HOST=[myDbHost] DB_PORT=3306 DB_DATABASE=[myDataBase] DB_USERNAME=[myUser] DB_PASSWORD=[myPassword] CACHE_DRIVER=redis QUEUE_DRIVER=sync
三.Lumen中启用Predis
- 安装Predis:Lumen中使用Predis需要引入 predis/predis 和 illuminate/redis两个包
#cd path to lumen composer require illuminate/redis ( illuminate/redis 依赖 predis/predis,所以 predis/predis 将会自行被引入)
- 修改lumen/vendor/laravel/lumen-framework/config/database.php中redis服务的相关配置参数:
'redis' => [ 'cluster' => env('REDIS_CLUSTER', false), 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'port' => env('REDIS_PORT', 6379), 'database' => env('REDIS_DATABASE', 0), 'password' => env('REDIS_PASSWORD', null), ], ] - 修改lumen/bootstrap/app.php,开启$app->withFacades()和$app->withEloquent(),并注册Illuminate\Redis\RedisServiceProvider:
$app->withFacades(); $app->withEloquent(); $app->register(Illuminate\Redis\RedisServiceProvider::class);
- 修改lumen/routes/web.php:
$app->get('/', function () use ($app) { //return $app->version(); Cache::put('lumen', 'Hello, Lumen.'); return Cache::get('lumen'); });页面输出:Hello, Lumen.
四.Lumen中启用PhpRedis扩展
- 安装PhpRedis
pecl install redis
- 修改lumen/bootstrap/app.php,添加如下代码:
$app->singleton('redis', function(){ $redis = new Redis; $redis->pconnect('172.17.0.3'); return $redis; }); unset($app->availableBindings['redis']); - 测试PhpRedis引入是否成功,修改lumen/routes/web.php:
$app->get('/', function () use ($app) { //return $app->version(); app('redis')->set('lumen', 'Hello, Lumen.'); return app('redis')->get("key"); });页面输出:Hello, Lumen.
Docker笔记二:Lumen & Redis的更多相关文章
- Docker笔记(二) 安装常用软件
常用环境安装 这里收集一些常用环境的安装步骤,可直接复制进行使用,节省安装时间,后续会随时补充 安装MySQL5.7.32 下载mysql5.7.32的镜像 ( 记得下载镜像要先确保镜像仓库中存在这个 ...
- Redis学习笔记(二):Redis集群
集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能. 1.节点 一个节点就是一个运行在集群模式下的Redis服务器.启动Redis服务器时,通过判断cluster-enabl ...
- Redis学习笔记二 (BitMap算法分析与BitCount语法)
Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
- Docker笔记(七):常用服务安装——Nginx、MySql、Redis
开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的安装方法,一般都相对比较繁琐 —— 要经过下载软件或源码包,编译安装,配置,启动等步骤,使用 Docker ...
- Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)
转载地址:https://www.cnblogs.com/spec-dog/p/11320513.html 开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的 ...
- redis相关笔记(二.集群配置及使用)
redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...
随机推荐
- mysql存储过程中in、out、inout参数使用实际案例
1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)//为了避免存储过程中分号(";")结束语句,我们使用分隔符告诉mysql解释器,该段命令是否已经结束了./ ...
- 在php中使用jquery uploadify进行多图片上传
jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadi ...
- js与php传递参数
这个问题在网页开发时经常遇到,其实解决办法非常简单,就是几行代码的事,不过各种js.php书上都没有,百度下来也乱七八糟的,有的能用,有的不能用.小编遇到这问题时认认真真研究了一上午,研究出一点心得, ...
- js架构设计模式——前端MVVM框架设计及实现(一)
前端MVVM框架设计及实现(一) 最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的avalon开始了,我 ...
- redis sets类型及操作
sets类型及操作set是集合,它是string类型的无序集合.通过hash table实现,添加.删除.查找的复杂度都是0(1).对集合我们可以实现取交际.差集并集.通过这些操作我们可以实现SNS中 ...
- PHP用户注册邮箱并验证激活帐号
我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 查 ...
- loadrunner controller:集合点策略
集合点只有在多用户并发运行的时候才能体现它的作用. Scenario ---> Rendezvous 打开集合点设置界面,如下图所示: 我们可以看到Vusers 列表框里有两个用户,这与我们设置 ...
- SQL Server 手把手教你使用profile进行性能监控
200 ? "200px" : this.width)!important;} --> 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自 ...
- linux 标准目录
转自 http://www.weixuehao.com/archives/492 装完Linux,首先需要弄清Linux 标准目录结构 / root -?启动Linux时使用的一些核心文件.如操作系统 ...
- Visual Studio 2017 RC 初探安装
上次看到博客介绍 Visual Studio 2017 RC,看到其中一个改进是启动很快,这是一大进步,也是低配电脑的程序员的期望.不过还没体验,是驴是骡子拉出来看看,这不就开始下载. 1.打开官网: ...