自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿的世界

「WHY」每一个你不满意的当下,都有一个你不曾努力的过去。

  • 博客(18)
  • 收藏
  • 关注

原创 封装Redis缓存操作类,避免缓存雪崩、缓存击穿、缓存穿透

<?php namespace App\Master\Services;use App\User;use Validator;use Illuminate\Contracts\Auth\Registrar as RegistrarContract;class CacheRedisService { private static $prefix = 'master:';...

2019-09-27 11:55:21 312

原创 使用Twemproxy实现Redis连接池

原理:php和twemproxy代理在同一服务器下,通过unix socket通信,proxy保持对远端redis的长连接,这样可以减少php直连redis的网络开销安装需要的工具yum install autoconfyum install automakeyum install libtool下载安装Twemproxywget https://codeload...

2019-09-26 20:57:20 637

原创 laravel技术关键字

平时在使用Laravel时,尽管一切东西都可以自己去手动实现,但是真正开发中利用好这些技巧,可以大幅度提升开发效率,代码复用,使代码看起来更优雅Laravel速查表:https://learnku.com/docs/laravel-cheatsheet/6.0Laravel API文档:https://laravel.com/api/6.x/index.htmlLaravel内助...

2019-09-26 18:08:13 286

原创 Laravel事件监听+队列异步处理

前言看到公司里的API里用到了事件监听+队列的方法去异步处理,所以稍微研究了一下,是观察者模式在Laravel中的实现。在我的例子里看不到优势,可能感觉还有点复杂,其实真正的应用场景很多。生活实例比如淘宝某个用户付款,称之为一个Event事件,此时需要通知卖家、物流、淘宝官方等等,同时这些通知是不受先后顺序影响的,此时卖家、物流、淘宝官方等则为多个监听者Listener。所以Eve...

2019-09-26 17:56:26 4186

原创 laravel通过服务提供者注册mongo服务

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use App\Services\Mongo\Mongo;class MongoServiceProvider extends ServiceProvider{ //延迟加载 protected $defer = true...

2019-09-26 11:18:19 158

原创 RabbitMQ+PHP实现topic交换机消息队列

多个生产者,一消费者publisher.php路由key为why.one publisher1.php路由key为why.two consumer.php的交换机类型为topic,绑定路由模式为why.*(*是匹配1个单词,#是匹配多个单词)publisher.php<?phpdate_default_timezone_set("Asia/Shanghai");$co...

2019-09-26 02:57:17 1283

原创 Redis实现分布式锁的最优方案

redis实现分布式锁有很多种方案,redis2.6以上可以用lua脚本实现加锁和设置有效期的原子性操作,但是redis2.6以下不支持lua脚本,只能采取get+setex或setnx+expire两种方案,前者忽略掉了get和setex之间的并发,而后者是忽视了ex失败的问题。最好的办法就是升级到新版本,支持set同时设置nx和ex参数,实现如下(加锁失败的循环等待没有实现,可根据业务自行实现...

2019-09-24 22:34:47 805 1

原创 PHP配置相关知识集锦

部分开发环境和生产环境配置区别变量名 php.ini-development php.ini-production error_reporting E_ALL E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors On Off display_startup_errors On ...

2019-09-21 17:16:16 371

原创 PHP7生命周期和进程管理

CLI模式模块初始化php_module_startup 请求初始化php_request_startup 请求执行php_execute_script 请求关闭php_request_shutdown 模块关闭php_module_shutdownPHP-FPM模式调用php_module_startuo模块初始化 调用fcgi_accept_request阻塞等待请求 如...

2019-09-18 02:39:30 683

原创 Laravel Queue — 生产和消费

公司的日志系统、推送系统,都是用的Laravel自带的Queue系统,之前只是调用大佬封装好的,不知道实现的原理,今天仔细看了看Queue的源码,总结一下,有不严谨和错误的地方,还希望大佬们指正。生产首先我们的业务用的是Beantalked,所以代码查看从BeanstalkdQueue.php的push入队(later方法为延迟队列)方法开始 /** * Push a ne...

2019-09-16 12:53:12 2192

原创 Redis常用小知识点集锦

unlink删除操作懒处理,丢给后台线程异步回收内存(整个redis为一棵大树,砍掉一个树枝,丢到旁边的异步线程池焚烧)blpop/brpoplist阻塞读brpoplpush处理list消息丢失setex分布式锁,幂等,重复提交等延时队列消息内容为zset的value,处理时间为socre,轮询获取到期任务进行处理bitmapbitcount统计指定范...

2019-09-14 17:04:30 478

原创 Redis数据结构之——快速列表quicklist

struct ziplist<T>{ int32 zlbytes; int32 zltail_offset; int16 zllength; T[] entries; int8 zlend;}struct ziplist_compressed{ int32 size; byte[] compressed_data;}...

2019-09-14 14:41:33 216

原创 Redis数据结构之——intset

当set集合容纳的元素都是整数,并且元素个数较少时,redis会使用intset来存储几何元素。inset是紧凑的数组解耦股,同时支持16位、32位和64位整数。struct intset<T>{ int32 encoding; //决定整数位宽是16位、32位还是64位 int32 length; //元素个数 in...

2019-09-14 13:38:04 267

原创 Redis数据结构之——压缩列表ziplist

概述 为了节约内存空间使用,zset和hash容器对象在元素个数较少时采用压缩列表进行存储,压缩列表使用的是一块连续的内存空间(数组列表),元素之间紧挨存储,没有任何冗余空隙。数据结构struct ziplist<T>{ int32 zlbytes; //整个业所列表占用的字节数 int32 zltail_offset; //...

2019-09-14 13:32:57 258

原创 Redis源码之——hashtable和rehash

概述: 在Redis中,整个数据库所有的key-value、hash的key-value、zset中的value-score、set的key-NULL都是通过字典结构实现的。字典内部结构: hashtable结构为一维数组分桶,二维链地址链表解决hash冲突。一维数组中存储的是二维链表的第一个元素指针。//二维链表struct dictEntry...

2019-09-14 13:12:02 541

原创 nginx—访问限制模块limit_conn_zone 和limit_req_zone配置使用详解

limit_conn_zone限定IP最大连接数:http { limit_conn_zone $binary_remote_addr zone=why_conn:10m; #共享内存区大小10M}location ~ .*\.(php|php5)?${ limit_conn why_conn 6; #设置给定键值的共享内存区域和允许的最大连接数 limit_...

2019-09-10 18:18:57 7748

原创 Redis各项运维指标监控维护字段

概括server:服务器运行的环境参数127.0.0.1:6379> info server# Serverredis_version:5.0.0 //版本redis_git_sha1:00000000 redis_git_dirty:0redis_build_id:d7f585d46da7df6aredis_mode:standalone //单机或集群os:D...

2019-09-04 17:42:33 3934

原创 redis哨兵sentinel部署和客户端实现

配置文件:port 26379 //哨兵端口号daemonize yes //守护进程pidfile "/usr/local/redis-sentinel/redis_sentinel_26379.pid" //pid目录logfile "/usr/local/redis-sentinel/redis_sentinel_26379.log" //log目录dir /usr/loca...

2019-09-02 01:23:36 632

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除