ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Redis安装全攻略:Windows与Linux双平台实战指南

Redis安装全攻略:Windows与Linux双平台实战指南 如果说数据库是程序员的工具箱那Redis就是里面最快的那把螺丝刀——单线程模型下还能每秒扛住十几万次读写所以从Session存储到分布式锁到处都有它的影子。不过有意思的是后台和社群里隔三差五就有人被安装这一步劝退有人打开官网发现只提供Linux源码包Windows用户一脸懵有人照着老教程装到一半发现下载源早就失效还有人在Linux上用源码编译卡在缺依赖上折腾了一晚上。这篇就把Windows和Linux两条最完整的安装路径都过一遍从选版本、找安装包到改配置、开机自启再到装完之后的验证和常见报错一次性讲透。1. 装之前先把版本、平台、下载源这三件事定下来很多人下载Redis的习惯是直接搜Redis安装包然后看到什么点什么。这个思路在学习阶段问题不大但如果你想在本地把环境搭得跟生产接近一点或者在装的过程中少踩几个坑动手前最好先花两分钟想清楚三件事装哪个版本、跑在什么平台上、安装包从哪来。这三件事是后面所有操作的地基。1.1 版本选择什么情况下用7.x什么情况继续用6.xRedis的版本迭代节奏在基础软件里算快的。截至目前7.2.x是大多数教程和云厂商默认推荐的稳定线7.4和8.0也已经发布。选版本我一般分三种情况全新学习、本地测试直接用7.x最新稳定版。官方文档、社区问答、云数据库的控制台都以新版为主你装了旧版容易遇到教程里的命令不存在的尴尬。公司老项目维护跟着项目走。很多遗留系统可能还在6.x甚至5.x上这时候不要私自升级Redis大版本升级涉及RDB文件格式兼容、命令行为变化比如6.0之后的ACL机制、7.0之后的Multi Part AOF都需要单独评估。生产环境新装优先选择社区维护成熟的版本并关注安全公告。不用追求最新但也别选到已经End of Life的版本。判断一个版本是否还值得用可以去官方GitHub仓库看release分支的维护状态。另外要注意不同版本的redis.conf默认内容差得不少比如7.0把AOF文件拆成了多个部分配置项从aof-use-rdb-preamble改成了aof-timestamp-enabled这类细节。这也是为什么我不建议直接拿一份网上的老配置文件去跑新Redis。1.2 平台定位本地学习用Windows生产环境一定是Linux这是安装前最重要的一条认知Redis官方没有发布过Windows原生版本。你在Windows上能装到的基本是下面几种来源社区维护的Windows移植版。最出名的是tporadowski/redis这个GitHub项目它基于Redis 5.0.14做了Windows适配提供zip包和MSI安装包。商业兼容实现。Memurai是专门面向Windows的Redis兼容方案API基本对齐但它是商业软件。通过WSLWindows Subsystem for Linux跑真正的Linux版Redis这是目前我比较推荐的方式。通过Docker Desktop跑Redis容器本质还是Linux容器。所以如果只是本地学习、写写DemoWindows WSL或者Docker就够了但如果你要搭的项目最终要部署到服务器那必须在Linux环境里跑一遍完整流程。Windows最终只能作为客户端开发机而不是Redis的运行环境。1.3 下载源官方源码、包管理器仓库和Windows移植版的区别下载源直接决定了你装到的是不是干净的Redis。Linux官方源码包地址是download.redis.io/releases/所有官方正式版本都在这里适合源码编译安装。这是最可信的来源。Linux包管理器仓库Ubuntu/Debian的apt、CentOS/RHEL的yum都能直接装redis-server胜在省事但仓库里的版本普遍偏老比如某些CentOS默认源里还是5.x。Windows移植版GitHub上的tporadowski/redis releases页面提供编译好的zip和MSI。国内访问GitHub可能时快时慢下载时留意校验文件哈希避免从不明来源的镜像站拿包。这里多说一句网上很多Redis官网下载Windows版的说法其实是误传。你在Redis官网的下载页面只会看到源码包和Docker镜像根本没有Windows的exe。搞清楚这个事实你就明白为什么Windows下安装教程总是绕来绕去。2. Windows没有官方Redis三条可用路线我都替你跑通了Windows下装Redis网上教程五花八门但归结起来就是三条路移植版zip包、WSL里跑Linux版、Docker容器。我实际试下来每条路都有各自适合的场景也都有各自的坑。2.1 路线一Windows移植版zip包最轻量但版本老旧这条路最快的场景是你只是临时想跑一个Redis实例装个客户端连一下十几分钟搞定不想折腾。操作步骤很简单去GitHub上找tporadowski/redis的releases页面下载zip包。解压到C:\Redis这种纯英文无空格的路径。解压后里面是redis-server.exe、redis-cli.exe和一份redis.windows.conf。打开命令行进入目录启动cd C:\Redis redis-server.exe redis.windows.conf另开一个终端验证redis-cli.exe ping看到PONG就说明跑起来了。这套方式的优点是零依赖自带exe直接跑。缺点也很明显版本停留在5.0.x很多新特性用不上。比如5.0没有ACL用户权限系统没有XINFO这类流命令的增强对于学习新版Redis的人来说体验会有落差。另外移植版在Windows的某些环境下会有连接稳定性问题不推荐作为长时间的开发环境。2.2 路线二WSL里跑Linux版我目前最推荐的本地方案Windows 10/11自带WSL装一个Ubuntu子系统然后在里面用Linux的方式装Redis体验基本等于一台真正的Linux机器。这对学习Linux命令也有帮助等于一套环境两种收获。启用WSL并安装Ubuntuwsl --install装完重启后进入Ubuntu终端然后是常规的Linux安装流程sudo apt update sudo apt install -y redis-server sudo service redis-server start redis-cli ping注意这里尽量不要用systemctl因为WSL默认不跑systemd除非你在/etc/wsl.conf里手动启用。service redis-server start是WSL里更省事的启动方式。这套方案让我最满意的地方是Redis的版本随Ubuntu仓库走。当前主流版本的Ubuntu仓库里Redis基本是6.x或7.x比Windows移植版的5.x新很多。同时Redis的配置文件、日志路径、数据目录都和标准Linux环境一模一样你在WSL里练熟了切到云服务器上毫无违和感。2.3 路线三Docker容器适合本来就在用Docker的人如果你电脑上已经装了Docker Desktop那跑Redis就是一条命令的事。Docker Desktop在Windows上的架构是Windows跑一个Linux虚拟机Docker容器全部在这个虚拟机里跑。所以Redis容器本质还是Linux环境。docker run -d --name redis-server \ -p 6379:6379 \ -v redis-data:/data \ --restartalways \ redis:7.2这里几个参数我解释一下-p 6379:6379把容器内的6379映射到Windows的6379这样宿主机上的redis-cli、桌面客户端都能连。-v redis-data:/dataRedis的RDB和AOF文件默认写在容器的/data目录不挂载卷的话容器一删数据全丢。--restartalwaysDocker Desktop重启后容器自动拉起。有人会在这里遇到一个经典报错提示信息里带error: start the windows daemon from a non-elevated terminal或者shared clients之类。这个一般是Docker Desktop在Windows上的权限和终端冲突问题不要在管理员权限的终端里跑docker命令改用普通权限的PowerShell或CMD。如果已经报错先退出所有管理员终端重启Docker Desktop通常就能恢复正常。2.4 Windows安装的经典坑闪退、端口占用和服务注册先说闪退。有人下载zip包后直接双击redis-server.exe窗口一闪就没了。原因是双击启动时进程没有加载配置文件也没有可交互的终端窗口Redis在Windows移植版里一旦被系统判定为没有控制台就会直接退出。正确做法是像前面写的在CMD或PowerShell里带redis.windows.conf参数启动。再说端口占用。默认6379如果被别的程序占了redis-server启动会直接拒绝绑定报错类似# Creating Server TCP listening socket *:6379: bind: No error排查命令在Windows下是netstat -ano | findstr :6379 taskkill /F /PID 进程PID确定端口被谁占了再决定是杀掉进程还是给Redis换配置端口。最后说服务注册。如果希望Redis随Windows开机自启移植版zip可以用系统sc命令注册成服务sc.exe create Redis binPath \C:\Redis\redis-server.exe\ --service-run \C:\Redis\redis.windows.conf\ start auto注意binPath里各种引号不能漏漏一个就会注册失败。sc注册成功后在服务管理里能看到Redis服务但我实测这台机器如果没设密码服务跑起来后默认监听所有网卡有一定暴露风险建议后面第4章的配置部分仔细看。3. Linux上我更推荐源码编译从依赖到systemd完整走一遍Linux下装Redis有两种主流方式包管理器一行命令或者源码编译。我的倾向很明确学习、测试随便用包管理器但只要是打算长期跑的实例源码编译更可控。原因也很实在——包管理器装出来的版本由发行版仓库决定你很难用上最新稳定版而源码编译从版本、编译参数到安装路径全在自己手里出了问题也更容易排查。3.1 包管理器一条命令搞定但版本可能比你预期老在Ubuntu/Debian系sudo apt update sudo apt install -y redis-server在CentOS/RHEL系默认仓库里可能没有Redis需要先启用EPELsudo yum install -y epel-release sudo yum install -y redis装完后启动sudo systemctl start redis sudo systemctl enable redis这条路的优点是真省事连systemd服务脚本都已经自动配好了。缺点是版本随缘比如某些CentOS 7的默认源里Redis还是3.x甚至更老而3.x连unlink命令都没有很多现代运维脚本根本跑不了。所以如果对版本有要求还是得源码编译。3.2 源码编译七步走核心是make和make install源码编译的完整过程我在一台干净的CentOS 7和一台Ubuntu 22.04上都跑通过Ubuntu侧的操作如下第一步安装编译依赖。Redis用C写的编译需要gcc、make测试脚本需要tclsudo apt update sudo apt install -y gcc g make tcl pkg-configCentOS对应的是sudo yum install -y gcc gcc-c make tcl第二步下载官方源码包。去download.redis.io/releases/找到目标版本比如wget https://download.redis.io/releases/redis-7.2.5.tar.gz tar xzf redis-7.2.5.tar.gz cd redis-7.2.5第三步编译make这里有个经验如果编译过程报jemalloc相关的错误可以改用libc内存分配器make MALLOClibcjemalloc是Redis默认用的内存分配器对高并发小对象分配更友好。但某些老系统的glibc版本和jemalloc编译不兼容这时候退回libc是最快的解决办法。第四步跑一遍测试make test测试会花几分钟全绿之后再进入安装。如果你赶时间make test可以跳过但我不建议跳过因为后面踩坑排错时会缺少一个参考基准。第五步安装到系统目录sudo make install默认会装到/usr/local/bin包括redis-server、redis-cli、redis-sentinel等。这一步做完命令行里就能直接敲redis-server了。3.3 make test失败多半卡在tcl其余是编译器版本问题我见过太多人在make test这步卡住报错信息千奇百怪但九成是同一个原因系统里没有tclsh。Redis的测试套件是用Tcl写的找不到tclsh就会直接中断。排查方式which tclsh如果没输出就装tcl再重新make test。Ubuntu装tcl包CentOS装tcl包装完一般就能解决。另一类问题是老系统上的gcc版本太旧。比如CentOS 7默认的gcc 4.8在某些新版Redis编译时会报stdatomic.h找不到之类的错误。解决办法是升级工具链sudo yum install -y centos-release-scl sudo yum install -y devtoolset-8 scl enable devtoolset-8 bash开启这个bash会话后再重新make问题就绕过去了。这类坑在官方文档里不一定有但遇到老系统时几乎必现。3.4 用systemd把Redis托管成开机自启服务make install之后Redis还只是个裸进程。想让它在系统启动时自动运行、崩溃后自动拉起最标准的做法是交给systemd。先把配置文件和目录准备好sudo mkdir -p /etc/redis sudo mkdir -p /var/lib/redis sudo mkdir -p /var/log/redis sudo useradd --system --home-dir /var/lib/redis redis sudo cp redis.conf /etc/redis/redis.conf sudo chown -R redis:redis /var/lib/redis /var/log/redis然后写一个systemd服务文件/etc/systemd/system/redis.service[Unit] DescriptionRedis Server Afternetwork.target [Service] Typeforking ExecStart/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Userredis Groupredis RuntimeDirectoryredis [Install] WantedBymulti-user.target这里有两个关键点Typeforking对应配置文件里的daemonize yes。Redis启动后会fork一个子进程进入后台systemd靠这个类型跟踪主进程。ExecStop用的redis-cli shutdown是优雅关闭它会触发Redis的持久化流程比直接kill安全得多。写完后加载并启用sudo systemctl daemon-reload sudo systemctl enable --now redis sudo systemctl status redis看到active (running)就说明托管成功了。之后的日常操作都通过systemctl完成跟管理nginx、mysql这些服务的习惯保持一致。4. 装完别急着用redis.conf里这几项配置必须动不管哪条路装出来的Redis默认配置文件都偏向于本地学习场景拿到生产环境直接用就是裸奔。下面这几项是每次安装后我第一时间会改的每一项都对应一类事故。4.1 网络暴露面bind、protected-mode和requirepass必须一起看默认情况下redis.conf里有一条bind 127.0.0.1 -::1意思是只监听本机回环地址外网连不进来。这条路没密码也能相对安全。但问题是很多人为了局域网内其他机器能连会把bind改成0.0.0.0甚至注释掉这就引出了第二个开关protected-mode。protected-mode yes的规则是如果Redis没设密码而且监听地址不止本机那么非本机连接会被拒绝。这是Redis的兜底保护机制防止有人一上来就裸奔到公网。理解了这个逻辑下面这段配置为什么要这么改就清楚了bind 0.0.0.0 protected-mode yes requirepass YourStrongPassword设了密码之后保护模式就不拦着外部连接了因为连接后必须AUTH。生产环境我更推荐的做法是bind不要写0.0.0.0而是绑定具体的业务网卡IP再配合防火墙只放行运维来源的IP密码照设。多一层限制不是麻烦是给自己留的余地。4.2 后台运行、日志路径和文件目录不设置好你会很痛苦源码编译装的Redis如果不改配置启动后是前台运行的——终端一关就停。配合systemd使用需要daemonize yesdaemonize yes pidfile /var/run/redis_6379.pid logfile /var/log/redis/redis-server.log dir /var/lib/redislogfile如果不设置日志会打到/dev/null里出问题啥也查不到。dir是Redis保存RDB和AOF文件的目录一定要指向一个确定存在且权限正确的目录。我见过有人把dir忘了配结果Redis直接往启动目录写数据文件后面找数据找半天。4.3 持久化RDB和AOF不是二选一得看业务Redis默认的持久化配置是只开RDB快照例如save 3600 1 save 300 100 save 60 10000含义是1小时内至少1次写操作就做一次快照或者5分钟内100次写操作或者60秒内10000次写操作满足任一条件就生成RDB文件。RDB恢复速度快适合做主从同步的初始副本但会丢失两次快照之间的数据。如果业务对数据丢失容忍度低就要开AOF。Redis 7.x的AOF配置如下appendonly yes appendfilename appendonly.aof appendfsync everysecappendfsync everysec是每秒钟刷一次盘最多丢一秒数据这是绝大多数业务的实际选择。生产环境我的习惯是RDB和AOF同时开RDB负责快速恢复和主从初始化AOF负责兜底最近一秒的写入。只有纯缓存、丢了能重建的场景才会把持久化全关掉。4.4 内存上限和淘汰策略别让Redis吃掉整台机器64位Redis默认不限制内存上限写多少用多少这在一台机器上跑多个服务时很危险。我一般在redis.conf里固定加这两行maxmemory 512mb maxmemory-policy allkeys-lrumaxmemory按实例的内存上限设置给业务预估的缓存量留出余量。maxmemory-policy是到达上限后的淘汰策略最常见的是allkeys-lru即按LRU算法淘汰最久没用的key。如果你的缓存里有大量固定不过期的业务key也可以考虑volatile-lru只淘汰带TTL的key。最怕的是看到noeviction它表示内存满了直接返回错误在缓存场景下等于雪崩催化剂。5. 安装验证与日常连接一条ping解决不了所有问题装完Redis第一件事当然是验证能连但能连和真正配置正确是两码事。很多人ping通了就收工结果换了台机器、换了个客户端就连不上。本节把验证命令、图形客户端和常见报错全部过一遍你照着检查一次应该能避开大部分连接问题。5.1 命令行三板斧ping、info、dbsizeRedis自带的redis-cli是最值得信赖的诊断工具。启动服务后按照下面顺序验证redis-cli ping返回PONG说明服务进程活着。然后看版本和基本状态redis-cli info server redis-cli info clientsinfo server里能看到redis_version、uptime_in_seconds、config_file这些关键信息。info clients能看到当前连接数和阻塞客户端数这是后面定位问题的常用入口。再看当前库里有几个key确认读写通路redis-cli dbsize redis-cli set test_key hello redis-cli get test_key redis-cli del test_key如果设了密码上面所有命令都要先认证。可以用-a参数但命令行会提示warning因为密码可能留在shell历史里redis-cli -a YourPassword ping更稳妥的方式是设置环境变量export REDISCLI_AUTHYourPassword redis-cli ping5.2 图形客户端连接Redis Desktop Manager和它的开源替代命令行熟悉之后日常看数据、排查key还是图形化客户端方便。最出名的是Redis Desktop Manager现在已经是商业软件另外还有开源的Another Redis Desktop Manager界面类似免费功能覆盖日常使用完全够。连接前你需要准备四个信息Host、Port、Auth、Name。Host本机就填127.0.0.1局域网或其他服务器填对应IP。Port默认6379改过就填新端口。Auth就是requirepass设置的密码没设置留空。Name只是给连接起个显示名随便填。如果本机用Docker起的Redis注意端口映射容器里Redis监听6379Windows宿主机通过-p 6379:6379映射到本机6379所以客户端Host填127.0.0.1即可。如果是WSL2Windows访问WSL内部服务通常也走localhost不需要专门拿WSL的虚拟IP。5.3 高频报错排查从Connection refused到command timed out把常见的连接报错整理成一张表每次连不上就对着表查报错现象常见原因处理方式Connection refusedRedis没启动、端口不对、bind限制先确认进程和端口再检查bind配置NOAUTH Authentication required服务设了密码但客户端没带在客户端里填Auth或用AUTH命令认证DENIED Redis is running in protected mode没设密码且监听地址不止本机设置requirepass或按需改bindSpring Boot报RedisConnectionFailureExceptionspring.redis.host/port/password配置错误或网络不通对齐配置文件逐个字段检查Lettuce报command timed out网络往返慢、大key阻塞、socket超时过短调大spring.redis.timeout排查大key慢命令容器访问不到宿主机Redis网络模式或IP写错容器内用host.docker.internal访问宿主机这里重点说下command timed out。Spring Boot默认用的是Lettuce客户端超时时间默认很短。当Redis恰好执行一个慢命令或者网络有抖动客户端就会抛这个异常。很多人以为是Redis挂了其实是超时参数太保守。解决方案是适当放宽spring.redis.timeout5000ms spring.redis.lettuce.pool.max-active8同时回头用redis-cli --latency看一下本机到Redis的延迟一般内网应该在1ms量级如果几十毫秒先查网络。5.4 Windows和防火墙把端口管好拒绝裸奔6379或自定义端口如果被系统防火墙默认放行了外部访问而Redis又恰好没有密码那你的实例基本等于对公网开放。我在Windows上排查端口占用时常用这套命令netstat -ano | findstr :6379 tasklist | findstr PID号 taskkill /F /PID PID号Linux上对应的是ss -lntp | grep 6379 firewall-cmd --list-ports如果用的是firewalld确认6379是否对外放行firewall-cmd --permanent --add-port6379/tcp --add-rich-rulerule familyipv4 source address192.168.1.0/24 port port6379 protocoltcp accept firewall-cmd --reload不建议直接执行firewall-cmd --permanent --add-port6379/tcp这种对全网段放行的操作。理由很简单Redis里存的往往是热点数据没有认证的Redis被扫到轻则被flushall重则被写入挖矿计划任务Redis有eval命令历史上出现过不少利用未授权访问入侵的案例。安全上的习惯一定从装完第一天就养成。6. 单机玩明白之后主从、集群、分布式锁和缓存治理装好一台Redis只是起点。实际项目里单点Redis扛不住高可用和高并发的需求这也是热搜词里redis主从redis分布式锁redis缓存治理这些词热度一直很高的原因。最后这部分把从单机走向生产要面临的几个方向串一遍给你一个清晰的进阶路线。6.1 主从复制和哨兵自动故障转移的门槛最简单的水平扩展就是主从复制。在从节点的配置文件里加一行replicaof 主节点IP 6379从节点启动后会自动从主节点同步全量数据之后持续增量同步。主从复制解决了两个问题读写分离和热备份。但它本身不具备主挂了自动切换的能力这时候需要哨兵(Sentinel)进程。哨兵是独立于Redis的监控进程它会定期PING主节点发现主节点不可用后在从节点里选一个提升为主节点并通知客户端更新连接。要跑一个可靠的哨兵集群通常建议至少3个哨兵节点避免单点误判。注意哨兵本身也需要单独部署和守护不是装好Redis就自带的功能。6.2 集群模式三主三从是最低起步配置如果单机内存不够或者写并发太高就要上Redis Cluster。集群通过slot槽把数据分散到多个主节点同时每个主节点挂一个从节点做副本。标准的最小集群是3主3从也就是6个节点redis-cli --cluster create \ 192.168.1.10:6379 192.168.1.11:6379 192.168.1.12:6379 \ 192.168.1.13:6379 192.168.1.14:6379 192.168.1.15:6379 \ --cluster-replicas 1--cluster-replicas 1表示每个主节点配一个从节点。集群的好处是数据自动分片、故障自动failover坏处是运维复杂度上一个台阶多键操作需要所有key在同一个slot里、节点扩缩容要迁移槽、客户端要处理MOVED重定向。我的建议是除非单机确实到了瓶颈先用好主从哨兵真要上集群优先考虑云厂商的托管Redis集群省掉大量运维精力。6.3 分布式锁的经典写法与Redisson封装Redis做分布式锁是面试高频点也是实际项目里经常被写错的地方。最经典的获取锁命令是SET lock_key random_value NX PX 30000含义是说只有key不存在时才能设置成功NX同时带30秒过期时间PX避免持有锁的进程崩溃后死锁。释放锁时不能用简单的DEL因为可能误删别人的锁。标准做法是用Lua脚本保证比较value再删除的原子性if redis.call(get, KEYS[1]) ARGV[1] then return redis.call(del, KEYS[1]) else return 0 end如果你在Java项目里用Redisson可以直接用RLock它内置了看门狗续期机制默认30秒锁超时持有期间每隔一段时间自动续期省去手动处理过期时间的麻烦。这里要记住一个关键认知Redis分布式锁不是100%强一致主从切换期间如果主节点宕机且锁还没同步到从节点就可能出现两个客户端同时拿到锁。理论上Redlock方案能降低概率但不能根除。对于极端要求强一致的场景要改用ZooKeeper或etcd不能盲目迷信Redis锁。6.4 缓存穿透、击穿、雪崩装完Redis之后真正的战场缓存层用上之后立刻就面临经典三问穿透、击穿、雪崩。穿透是查询一个必然不存在的数据缓存里永远没有请求直接打到数据库恶意用户可以用这个漏洞打垮数据库。常见解法是缓存空值或者用布隆过滤器预判key是否存在。击穿是某个热点key过期瞬间涌进大量请求集中在同一时刻打库。解法包括互斥锁重建缓存或者热点数据设置为逻辑过期、不真正删除。雪崩是大量key同时过期导致缓存集体失效流量全部压到数据库。解法主要是过期时间加随机值让key的失效时间错开同时服务端做熔断限流。至于Redis的数据类型选型也顺手记住一张速查表数据类型场景String缓存value、计数器、SessionHash对象属性存储、购物车、用户资料List简单的消息队列、最新列表Set去重、共同好友、标签系统ZSet排行榜、滑动窗口限流、延时队列面试如果问Redis为什么快标准回答思路是纯内存读写、单线程模型避免了锁竞争、IO多路复用支持高并发连接、底层数据结构经过精心设计。这四点都要点上但也不要忽略6.0之后引入的IO多线程命令执行依然单线程只是网络读写并行化。就我个人这些年装Redis的经验不同阶段可以走不同的路学习阶段用Windows上的WSL或Docker怎么折腾都不心疼正式环境一定要Linux源码编译版本自己定行为也可控。密码从第一天就设上能用配置文件解决的问题就别用命令行裸改。最后分享一个小技巧装完Redis记得把redis-cli所在目录加进PATH。Windows下是bin目录Linux下make install后一般是/usr/local/bin这样不管在哪敲redis-cli都会自动找到省下很多莫名其妙找不到命令的时间。
返回列表