windows上安装Redis

一、下载

https://github.com/tporadowski/redis(官方不提供windows版)

二、添加服务的命令

配置文件里设置密码:requirepass 123456
redis.windows-service.conf表示所使用的配置文件.

1
redis-server --service-install redis.windows-service.conf --loglevel verbose

启动停止和卸载服务

启动服务redis-server --service-start
停止服务redis-server --service-stop
卸载服务redis-server --service-uninstall

三、连接

redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
或者

1
2
3
4
5
6
C:\Redis>redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

四、多个Redis服务(可选,以上的步骤已经完成了Redis的安装)

首先修改配置文件,确保端口不能冲突
还有就是服务名不能冲突!!

安装 Redis 服务

1
redis-server --service-install redis.windows.conf --loglevel verbose --service-name Redis_2

启动 Redis 服务

安装完毕后,你可以启动 Redis 服务。使用以下命令启动 Redis 服务:

1
redis-server --service-start --service-name Redis_2

停止 Redis 服务

1
redis-server --service-stop --service-name Redis_2

卸载 Redis 服务

如果你不再需要 Redis 服务,可以通过以下命令卸载它:

1
redis-server --service-uninstall --service-name Redis_2

五、与windows服务相关的一些命令(使用cmd)

sc qc 查看服务配置(Query Config)

1
sc qc Redis_2

sc qc

sc query 查询服务状态(Query State)

1
sc query Redis_2

sc query

使用 netstat 命令查看端口 (也能用于:查找特定 PID 对应的端口)

你可以使用 netstat 命令来列出系统上所有的活动连接和它们的端口。要查找特定服务的端口,可以过滤输出。

例如,要查看 Redis 默认的端口(6379)占用情况:

1
netstat -ano | findstr 6379
  • -a:显示所有连接和监听端口。
  • -n:以数字形式显示地址和端口号。
  • -o:显示每个连接所属的进程 ID(PID)。

netstat

依次为:”协议,本地地址,外部地址,状态,PID“,这条记录表示 Redis 正在本地监听端口 6379,等待客户端(本地或远程)连接。

1
netstat -ano | findstr 17160

netstat

使用 tasklist 查看 PID 对应的进程名称

一旦你知道了进程 ID(PID),你可以使用 tasklist 命令查看该 PID 对应的进程名称。

1
tasklist /FI "PID eq 17160"

tasklist

使用 tasklist 查看进程名称对应的 PID

1
tasklist /FI "IMAGENAME eq redis-server.exe"

tasklist


使用 PowerShell

服务名输出服务的进程 ID(PID)(good good,使用真正的服务名而不是进程名)

Get-WmiObject Win32_Service | Where-Object { $_.DisplayName -eq "Redis" } | Select-Object Name, ProcessId

补充:Get-WmiObject -Class Win32_Service | Where-Object { $_.ProcessId -eq 17160 }

查找 PID 所占用的端口

Get-NetTCPConnection -OwningProcess 17160
powershell

一条命令(花里胡哨)

将 netstat 和 tasklist 输出结合起来,通过以下命令找出某个端口对应的进程名称

netstat -ano | findstr "6379" | for /f "tokens=5" %a in ('more') do tasklist /FI "PID eq %a"
cmd

使用powershell

Get-NetTCPConnection -LocalPort 6379 | ForEach-Object { (Get-WmiObject Win32_Process -Filter "ProcessId = $($_.OwningProcess)").Name }
powershell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Get-NetTCPConnection -LocalPort 6379 | ForEach-Object { (Get-WmiObject Win32_Process -Filter "ProcessId = $($_.OwningProcess)").Name }


Get-NetTCPConnection -LocalPort 6379 | ForEach-Object {
$processId = $_.OwningProcess
Get-WmiObject Win32_Process | Where-Object { $_.ProcessId -eq $processId }
}


Get-NetTCPConnection -LocalPort 6379 | ForEach-Object {
$processId = $_.OwningProcess
Get-WmiObject Win32_Service | Where-Object { $_.ProcessId -eq $processId }
}


Get-NetTCPConnection -LocalPort 6379 | ForEach-Object {
Get-Process -Id $_.OwningProcess
}