windows10上使用wsl安装redis并安装php扩展

首先,你要让你的电脑上的windows10升级到2004版本以上,这样可以支持wsl2

然后,你要在Microsoft store 安装Ubuntu

打开ubuntu,开始安装redis

1, 安装gcc编译

sudo apt-get install gcc 

2,安装redis

不同版本的redis 下载地址 https://download.redis.io/releases/

 

这里找一个php能支持的比较新的版本的redis  5.0.2

wget https://download.redis.io/releases/redis-5.0.2.tar.gz

解压缩

tar xzf redis-5.0.2.tar.gz

 进入目录,make一下

cd redis-5.0.2
make

这个时候可能机器上没有make,那就安装下

sudo apt install make
sudo apt install make-guile

这两个任选一个安装

然后继续make

然后

sudo make install

 然后就是安装时会让你选择端口、配置文件名、日志文件名和数据目录等,都可以使用默认,默认是你的端口号,不过无所谓,你想改就改呗

最后启动

redis-server

这时候会出现一些警告

这主要是什么问题呢?

第一个Warning:

 WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

看不太懂,意思大概就是,你这个设置太低了,不能满足需要

一个大神的说法:(https://blog.csdn.net/jiangshouzhuang/article/details/50864933)

net.core.somaxconn是linux中的一个kernel参数,表示socket监听(listen)的backlog上限。
backlog是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。
而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。
当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。
所以说net.core.somaxconn限制了接收新 TCP 连接侦听队列的大小。
对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。

那么修改下:

方法1: 临时设置生效: sysctl -w net.core.somaxconn = 1024
方法2: 永久生效: 修改/etc/sysctl.conf文件

sudo vim /etc/sysctl.con
#末尾添加:
net.core.somaxconn = 1024
#然后执行命令
sodu sysctl -p

 第二个Warning:

 WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

overcommit_memory参数说明:
设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
注意:redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。

解决方法:

方法1: 临时设置生效: sysctl -w vm.overcommit_memory = 1
方法2: 永久生效: 修改/etc/sysctl.conf文件,增加一行
vm.overcommit_memory = 1
然后执行命令
sysctl -p

 

 

你可能感兴趣的:(自己看的笔记,redis,windows,10,wsl)