Redis在电商中的两个使用场景  

Redis在电商中的两个使用场景 1. 延时队列,订单的自动取消,确认收货以等 2. 商品列表的筛选 1.延时队列在订单自动取消下的使用 为了避免库存占用,电商平台一般会在后台设置订单自动取消的时间,为了实现这个业务场景,开始的时候处理电商订单自动取消是通过crontab每个1分钟去查询订单表,根据条件判断订单是否可以取消,有两个比较大的弊端 a.频繁的去查询订单表 b. 不同的订单类型条件不一样,可能需要写好几个脚本 通过Redis的sorted set实现简单延时队列 sorted set的

Posted:2019-10-23  By vilay

IP地址计算  

IP地址计算 示例: 100.61.0.0/10 #格式 ip/掩码位 转换成二进制就是 01100100.00111101.00000000.00000000 掩码位10表示前10位不变,所以后面22位是可以变的。 可使用IP地址范围就是 100.0.0.1~100.63.255.254

Posted:2019-10-23  By vilay

Docker 宿主机执行容器PHP命令行  

服务器环境是用docker搭建的,开发后期业务场景需要使用crond执行定时脚本任务。 记录下解决问题的过程 1.首先我想到在宿主机在安装个php,但是有个问题mysql也在容器里面,通信存在问题 2.在宿主机调用容器的php 2 方案参考大佬文章是这么处理的。 touch /usr/bin/php7cli chmod +x /usr/bin/php7cli vim /usr/bin/php7cli 写入下面的命令 #!/bin/bash if [ ! -n "$1" ];

Posted:2019-10-21  By vilay

Nginx 高并发下限流配置  

Nginx 高并发下限流配置

Posted:2019-10-18  By vilay

Nginx 负载均衡获取用户真实IP  

四层负载均衡:后端获取的直接就是用户的真实IP。 七层负载均衡:需要对应用服务器进行配置,然后使用X-Forwarded-For的方式获取客户端的真实IP地址。 真实的客户端IP会被负载均衡放在HTTP头部的X-Forwarded-For字段,格式如下: X-Forwarded-For: 用户真实IP, 代理服务器1-IP, 代理服务器2-IP,... 当使用此方式获取客户端真实IP时,获取的第一个地址就是客户端真实IP。 修改Nginx的配置文件nginx.conf,增加两个配置 set_re

Posted:2019-10-18  By vilay

负载均衡:四层负载,七层负载  

四层负载 四层负载均衡(TCP协议) 七层负载 七层负载均衡(HTTP/HTTPS协议)

Posted:2019-10-18  By vilay

Docker 查看容器日志  

Docker 查看容器日志 docker log -f xxxxxx #xxx可以是容器名称或者容器的id 查看docker磁盘使用情况 docker system df

Posted:2019-10-10  By vilay

Mysql 修改字段的字符集  

Mysql 修改字段的字符集 ALTER TABLE answers MODIFY COLUMN `content` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '';

Posted:2019-10-10  By vilay

Mac 升级Calalina 导致apache php环境无法使用解决方案  

Mac 升级Calalina 导致apache php环境无法使用解决方案 第一步:修改配置文件,修改下面几个地方 sudo vi /etc/apache2/httpd.conf #LoadModule rewrite_module libexec/apache2/mod_rewrite.so #注释去掉 #LoadModule php7_module libexec/apache2/libphp7.so #注释去掉 DocumentRoot "/Users/vilay/www&quo

Posted:2019-10-09  By vilayz

Linux 查看所有用户的定时任务  

Linux 下查看所有用户的定时任务 我们默认执行crontab -e或者crontab -l的时候针对的都是当前用户的定时任务。 如果要查看所有用户的定时任务,我们可以登录root账户,只有root账户可以,执行下面的命令 cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {} 然后查看下/etc/passwd用户的顺序,就可以知道哪些任务是由哪个用户在执行。

Posted:2019-10-09  By vilayz

Docker nginx配置https  

在docker 配置的环境下使用https nginx 配置 server { listen 443 ssl; server_name www.nuxtv.com; root /usr/share/nginx/html/nuxtv; index index.html index.htm index.php; location / { if (!-f $request_filename){ rewrite ^/(.*)$ /index.php?s=$1 last; break; } } ssl_c

Posted:2019-10-09  By vilay

docker-compose 安装  

安装命令 curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 执行测试下 docker-compose

Posted:2019-09-23  By vilay

docker 安装php gd扩展  

DOCKER 构建NGINX+PHP+MYSQL独立的容器 上面文章有介绍过docker里面安装php的扩展,但是在安装GD的时候,报错了,提示没有基础库 configure: error: png.h not found. 解决方法 先安装依赖库 apt update apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev 再安装扩展如果直接按这种方式安装GD扩展,会缺少jpeg库,所以要先配置扩展,配置完jpeg库

Posted:2019-09-19  By vilayz

Go import  

Go 导入包的方式 常见的方式 package main import ( "fmt" ) func main() { fmt.Println("hello") } 这个是从 GOROOT目录去加载模块 另外我们还可以安装相对路径或者绝对路径去加载 import ( "./models" #相对路径引入,不太建议 "goweb/models" #绝对路径引入 ) 几个特殊的方式 1. . package main i

Posted:2019-09-01  By vilayz

Go array,slice,map学习笔记  

Go 的array,slice,map一直不太分的清楚,做个学习笔记。 Array array 就是数组 数组定义 var arr [n]type #n表示长度,type表示数组类型 示例 var arr [3]int # 申明一个长度为3的整形数组,arr[0],arr[1],arr[2] 都是0 数组还有一种方法定义: a := [2]int{1,2} b := [10]int{1,2,3} # b[0] 等于1 b[1] 等于2 b[2] 等于 3,其它都默认等于0 c := [...]i

Posted:2019-08-25  By vilayz