news 2026/9/9 12:19:40

Linux下Redis简单操作:安装、配置与常用命令实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux下Redis简单操作:安装、配置与常用命令实战

Linux 上折腾 Redis 这件事,我其实一开始是拒绝的。后来发现,只要把安装、配置、常用命令和几个典型场景捋顺了,“linux redis简单操作”真不是嘴上说说,而是十几分钟就能上手的事。这篇文章就按我实际干活时的路径来写,不绕弯子,直接给你能照着敲的命令和排查思路。无论你是刚接触 Linux 的运维新人,还是写业务代码需要自己搭缓存环境的后端开发,又或者是面试前想快速过一遍 Redis 核心操作,这篇都适用。

先交代一个基本认知:Redis 本身就是一个基于内存的键值型数据库,它的强项是读写速度极快、数据结构丰富。之所以非要放到 Linux 上玩,是因为 Redis 官方对 Linux 的支持最成熟,生产环境几乎清一色是 Linux 服务器,而且 Linux 下可以方便地用 systemd 托管、用 cron 做备份、用防火墙规则精确控制访问。你在 Windows 上装个 Redis 做本地测试没问题,但要论“简单操作”之外的稳定性和可控性,Linux 才是主场。

1. 整体设计与思路拆解

1.1 为什么在 Linux 上操作 Redis 而不是 Windows

很多人第一次接触 Redis 是在 Windows 上,因为下载个 zip 解压就能跑。但等你真正要部署到服务器、要接入公司项目、要处理并发缓存的时候,Windows 那个版本就很尴尬了。Redis 官方其实并没有发布 Windows 原生版本,GitHub 上的 Windows 移植版是微软的老黄历,版本滞后、性能表现也不如 Linux 原生版本。而 Linux 下有官方的 PPA 源、有高版本可编译、有 systemd 帮你守护进程,这才是 Redis 的标准运行环境。

从资源利用角度看,Redis 是单线程模型,对 CPU 的要求不算高,但对内存和文件系统的效率非常敏感。Linux 的epoll事件模型能撑起高并发连接,fork()机制在做 RDB 持久化时也比 Windows 那一套更干净。简单说,Linux 上跑 Redis 是“原生体验”,Windows 上跑 Redis 是“能用但不爽”。

1.2 不同安装方式之间的取舍

我在不同环境里分别用过三种安装方式,各自的适用场景差别很大:

安装方式优点缺点适合场景
包管理器安装(apt/yum)快,依赖自动处理,systemd 服务自带版本可能不是最新开发测试、快速部署
源码编译安装版本可自选,参数可定制编译耗时长,依赖 gcc 等工具链生产环境、定制化编译
Docker 容器运行环境隔离,启停方便,主从集群搭建快有性能损耗,调试略绕微服务环境、多实例测试

如果只是本地学命令、跑 demo,我建议直接apt install redis-serveryum install redis。如果要上生产,我会选官网下载稳定版源码编译,这样 redis.conf 的默认行为和版本特性你心里有数。要是公司已经全面容器化,那就用 Docker 镜像,一条docker run就能起一个实例,做主从复制测试更是方便。

1.3 操作前的环境准备

动工之前,先确认三件事。第一,Linux 版本和权限,建议你用 root 或具备 sudo 权限的账号操作,因为安装软件、修改配置、写日志目录都需要系统权限。第二,防火墙策略,如果 Redis 只给本机用,那默认bind 127.0.0.1就够了,不需要额外开端口;如果要给局域网内其他机器提供缓存服务,就得在防火墙里放行 6379 端口。第三,内存规划,Redis 默认把数据放在内存里,你得预估一下未来缓存数据量,比如计划缓存 5GB 数据,那服务器内存至少要留 8GB 以上给 Redis 和系统其他进程。

这些准备看着琐碎,但能省下后面一大半排查故障的时间。

2. 核心细节解析与实操要点

2.1 redis.conf 里的几个关键配置项

Redis 安装完以后,配置文件在/etc/redis/redis.conf(apt 安装)或安装目录下的redis.conf(编译安装)。这个文件两百多行,全是注释,新手容易看晕。我按使用频率排个序,你优先关注这几个:

  • daemonize:是否以守护进程方式运行。设为yes后,Redis 启动后就会在后台跑,终端关掉也不影响。
  • bind:监听地址。默认127.0.0.1只允许本机访问。如果你要远程连这个 Redis,就改成0.0.0.0,但一定要注意配合requirepass设密码。
  • protected-mode:保护模式。默认yes,如果没设密码且绑定了所有网卡,Redis 会拒绝外部访问,这是一种安全保险。
  • port:监听端口,默认 6379。除非冲突或安全考量,我一般不改。
  • requirepass:设置访问密码。这个在公网或局域网环境必须配,不然会被扫描工具直接爆破。
  • maxmemory:最大内存上限。比如设512mb,Redis 达到上限后会按maxmemory-policy指定的策略淘汰 key。
  • maxmemory-policy:内存淘汰策略。allkeys-lru是常用的,表示所有 key 按 LRU 算法淘汰最近最少使用的;volatile-lru则只淘汰设置了过期时间的 key。
  • appendonly:是否开启 AOF 持久化。生产环境建议yes,这样重启后数据恢复更完整。
  • save:RDB 快照触发条件,比如save 900 1表示 900 秒内至少有 1 个 key 变化就生成快照。

配置里还有一个容易被忽略的dir,它指定 RDB 快照文件和 AOF 文件的存放目录。务必确保这个目录存在并且 Redis 进程有写权限,否则你执行SAVEBGSAVE时可能会报错。

2.2 启动与停止的正确姿势

配置改完,启动方式有讲究。如果你用的是apt安装的 Redis,直接systemctl start redis就行。这个命令的好处是 Redis 会交给 systemd 管理,开机自启、崩溃重启都能自动搞定。源码编译安装的,则要在安装目录下执行./bin/redis-server /path/to/redis.conf,它会读取你指定的配置启动。

无论哪种方式,启动后先用redis-cli ping探一下。返回PONG就说明服务正常。停止也一样,用redis-cli shutdown是安全关闭方式,它会先把内存里的数据保存到磁盘再退出。直接kill -9是下策,可能导致最近的数据丢失,除非进程已经卡死,否则别用。

2.3 用 systemd 接管 Redis 进程

如果你编译安装 Redis,我强烈建议你手写一个 systemd service 文件,把 Redis 变成系统服务。这样就能用systemctl start redissystemctl enable redis来管理,而不是每次开机后手动敲命令。

/etc/systemd/system/redis.service里写入:

[Unit] Description=Redis In-Memory Data Store After=network.target [Service] ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ExecStop=/usr/local/redis/bin/redis-cli shutdown Restart=always User=redis Group=redis

然后systemctl daemon-reload,再systemctl start redis。这里有个细节:如果配置里没设置daemonize yes,systemd 会管理前台进程,状态栏更干净;如果设了 daemonize,systemd 认为服务启动后就退出了,容易误判。所以我用 systemd 托管时,会刻意把daemonize设为no,让 Redis 在前台运行,由 systemd 负责守护。

3. 实操过程与核心环节实现

3.1 从零开始:三条安装路径的完整命令

方式一:apt/yum 快速安装

Ubuntu/Debian 系:

sudo apt update sudo apt install redis-server -y systemctl enable redis-server systemctl start redis-server

CentOS/RHEL 系:

sudo yum install epel-release -y sudo yum install redis -y systemctl enable redis systemctl start redis

装完检查一下版本:redis-server --version

方式二:源码编译安装

先去官网挑一个稳定版,比如 7.x 或 6.2.x。下载解压后:

wget https://download.redis.io/releases/redis-7.0.12.tar.gz tar xzf redis-7.0.12.tar.gz cd redis-7.0.12 make -j4 make install PREFIX=/usr/local/redis

编译依赖 gcc 和 make,如果缺失先用apt install build-essentialyum groupinstall "Development Tools"装上。编译成功后,可执行文件在/usr/local/redis/bin下,配置文件在源码目录的redis.conf。把源码目录里的 redis.conf 复制到/usr/local/redis/,再按需修改。

方式三:Docker 运行

docker run -d --name redis-test -p 6379:6379 -v /data/redis:/data redis:7.0

这个命令会从镜像仓库拉取 Redis 7.0 镜像,并把宿主的/data/redis目录挂载到容器里的数据目录。用docker exec -it redis-test redis-cli进入命令行。做多实例或主从测试时,Docker 方式确实清爽,每个容器一套环境互不干扰。

3.2 命令行基础操作:五种数据类型的增删改查

Redis 能“简单操作”的核心,是掌握五种基本数据类型的命令。

字符串(String)

redis-cli SET user:name "zhangsan" GET user:name SET user:age 18 EX 60 TTL user:age INCR user:count

SET命令里的EX 60表示 60 秒后自动过期,这个特性在做限流、验证码这类临时数据时非常常用。INCR是原子自增,用来做计数器最顺手,比如统计接口调用次数、点赞数。

哈希(Hash)

HSET user:1001 name "lisi" age 25 HGET user:1001 name HGETALL user:1001 HINCRBY user:1001 age 1

Hash 适合存对象,比如用户信息、订单信息。一个 key 对应一个对象,对象里多个字段,比把整个对象序列化成字符串存 String 更灵活,改一个字段不用全量覆盖。

列表(List)

RPUSH task:queue "job1" "job2" "job3" LPOP task:queue LRANGE task:queue 0 -1 LLEN task:queue

List 是双向链表,LPUSH/RPUSH加数据,LPOP/RPOP取数据。经典的用法是做消息队列、最新列表,比如把用户的最新评论推送到 List 左边,然后用LRANGE读取。

集合(Set)

SADD tags:article1 "linux" "redis" "database" SMEMBERS tags:article1 SISMEMBER tags:article1 "redis" SINTER tags:article1 tags:article2

Set 的元素唯一,适合做去重和集合运算。比如文章打标签、用户关注关系,SINTER可以求两个集合的交集,比如查“既关注了 A 又关注了 B”的用户。

有序集合(ZSet)

ZADD leaderboard 100 "player1" ZADD leaderboard 200 "player2" ZRANGE leaderboard 0 -1 WITHSCORES ZREVRANGE leaderboard 0 -1 WITHSCORES ZINCRBY leaderboard 50 "player1"

ZSet 的每个成员带一个分数,ZREVRANGE按分数从高到低排序。这是实现排行榜的绝佳工具,分数就是排序依据,更新分数用ZINCRBY一行搞定。

3.3 实际场景串一串:验证码、排行榜、分布式锁

只讲数据类型命令还不够,我拿三个最常见的业务场景串一遍,你就明白这些命令怎么组合使用了。

场景一:登录验证码

用户请求发送验证码,生成一个 4 到 6 位的随机数字,用字符串类型存储,设置 5 分钟过期。用户提交时再用GET取出比对。

# 发送验证码时 SET captcha:user:13800138000 "4826" EX 300 # 用户提交时 GET captcha:user:13800138000

这里的关键是“过期时间”。如果不用 Redis 的EX特性,你还要自己写定时任务清理验证码,麻烦且容易漏。Redis 一个命令就把“存储+过期”都做了,这也是它能当缓存数据库用的重要原因。

场景二:热榜排行

比如一个内容平台要显示热榜,每篇文章被用户浏览一次就更新一次热度。用 ZSet 存储所有文章和热度,分数每加 1 用ZINCRBY更新,展示用ZREVRANGE取前 50 名。

ZINCRBY hot:articles 1 article:1001 ZINCRBY hot:articles 1 article:1002 ZREVRANGE hot:articles 0 49 WITHSCORES

这样就不用每次都去 MySQL 里ORDER BY排序了。Redis 的 ZSet 底层是跳表,按分数排序的性能非常稳定,上百万数据量也能扛得住。

场景三:分布式锁

多台机器同时处理同一个订单,需要保证只有一个服务实例能执行某个操作。Redis 分布式锁的经典写法是:

SET lock:order:12345 "server-01" NX EX 10

NX表示只有当 key 不存在时才设置成功。哪个实例设置成功,谁就拿到了锁。处理完业务后删除锁:

DEL lock:order:12345

这里有个坑:如果业务执行时间超过 10 秒,锁自动释放,别的实例可能同时进入,导致逻辑重入。所以锁的过期时间要根据业务耗时合理设置,最好加上“线程标识”校验,确保只有持锁者才能释放锁。面试里问 Redis 分布式锁,其实就是考察这些“看似简单但细节很多”的点。

3.4 批量操作与管道(Pipeline)

Redis 命令逐条发送会有网络往返耗时,当你要批量写入大量数据时,用管道效果天差地别。在 redis-cli 里,可以这样:

( echo "SET user:1 'hello'" echo "SET user:2 'world'" echo "INCR counter" ) | redis-cli --pipe

--pipe模式会一次性把多条命令打包发给 Redis,减少网络开销。我在初始化测试数据、迁移缓存时经常用这个方式,几千条命令瞬间执行完。注意,管道模式下 Redis 不会逐条回复,只会返回一个统计信息,所以它更适合“批量写”而不是“批量读”。

3.5 数据过期与删除的脑洞

Redis 的 key 过期策略是“惰性删除 + 定期删除”结合。读的时候检查是否过期,同时后台每秒抽几次检查过期 key。所以有些过期 key 可能不会立刻消失,但不用你操心,它们迟早会被清理掉。

如果你想手动清理某些前缀的 key,redis-cli 没有直接支持KEYS user:*后批量删除,但可以组合命令:

redis-cli --scan --pattern "user:*" | xargs -r redis-cli DEL

--scan用游标方式遍历,不会像KEYS一样在大量 key 时阻塞 Redis。这也是一个经典面试题:生产环境千万别用KEYS *,会卡死 Redis 单线程。

4. 常见问题与排查技巧实录

4.1 连接被拒绝:网络与安全配置引起的连锁反应

现象redis-cli -h 192.168.x.x pingCould not connect to Redis at 192.168.x.x:6379: Connection refused

排查路径

第一步,确认 Redis 进程是不是活着。ps -ef | grep redis看进程在不在,如果不在就看日志,常见原因是 redis.conf 写错了导致启动失败。

第二步,确认监听地址。netstat -tlnp | grep 6379看 Redis 监听在哪个 IP。如果只监听了127.0.0.1,外部机器肯定连不上。这时候需要把bind 127.0.0.1改成bind 0.0.0.0或指定内网 IP。

第三步,确认防火墙。Ubuntu 上ufw status,CentOS 上firewall-cmd --list-all,把 6379 端口放行。很多情况下 Redis 配置没问题,是防火墙在中间拦了一道。

第四步,确认密码。如果设置了requirepass,用redis-cli -a yourpassword ping测试。

这个过程看似繁琐,但其实就是“进程 → 监听 → 防火墙 → 认证”四个环节逐一排除。

4.2 内存告急:maxmemory 和淘汰策略

现象:Redis 日志报OOM command not allowed when used memory > maxmemory

这是内存达到maxmemory上限后,写命令被拒绝。如果不希望 Redis 直接拒绝写入,而是淘汰旧数据腾空间,就要设置maxmemory-policy

生产环境我常用allkeys-lru,让 Redis 自动淘汰最久没被访问的 key。但要注意,如果公司要求“某些 key 必须保住”,那就不能靠淘汰策略,而是要在设计时给关键 key 设更长的过期时间,或者干脆单独用一台 Redis 存关键数据。

实操中还有一个直观工具,登录 redis-cli 后用INFO memory查看内存分配的详细情况。

4.3 键写不进去:key 数量爆炸和内存碎片

现象:Redis 能连上,但数据写入后可用内存越来越低,重启后看起来释放了内存,过一阵又满了。

排查时先执行DBSIZE看 key 总数,再INFO memoryused_memoryused_memory_rss。如果两者差距很大,说明存在内存碎片。碎片率可以用MEMORY DOCTOR命令查看诊断建议,必要时重启 Redis 释放碎片,或者升级到 4.0 以上版本用自动碎片整理。

这里提示一个常见误区:FLUSHALL瞬间清空所有 key,虽然能救急,但千万别在业务高峰期手滑执行。我见过有人把测试环境的FLUSHALL命令打在线上,结果缓存全部失效,数据库瞬间被流量打穿。稳妥做法是先redis-cli -n 0 DBSIZE看看当前库的 key 数量,确认环境再操作。

4.4 数据重启后丢失:RDB 和 AOF 的取舍

现象:服务器重启后,Redis 里有些数据不见了。

原因在于 Redis 的持久化机制。RDB 模式的快照是“隔一段时间打一次点”,如果两次快照之间的数据变化还没触发落盘,进程就退了,这部分数据就丢了。AOF 模式则实时追加写命令,数据丢失窗口更小。

如果业务对数据耐久性要求高,比如缓存了订单状态,建议开启appendonly yes,同时设置appendfsync everysec。这个配置表示每秒刷盘一次,性能和数据安全相对均衡。极端情况下最多丢 1 秒的写操作,但换来的是几乎是实时持久化。

线上排查时,可以用redis-check-rdbredis-check-aof工具检测持久化文件的完整性。命令在 Redis 安装目录的 bin 下,比如:

/usr/local/redis/bin/redis-check-rdb /var/lib/redis/dump.rdb

4.5 可视化工具与日常维护技巧

命令行用多了,难免有想“看图形界面”的时刻。我常用的是 Another Redis Desktop Manager,它是跨平台的 Redis 客户端工具,支持连接多台 Redis、查看 key 的 TTL、执行命令、查看慢日志。相比老牌的 Redis Desktop Manager,它更新频率高,而且 Linux 版本下载方便。

有一点提醒:图形化工具只适合排查和开发调试,别在生产环境挂着客户端来回切换库,容易误操作。生产环境的日常操作,我还是建议命令行为主。把redis-cli的常用命令记熟,比依赖界面更快、更可控。

用途常用命令
查看所有 key 数量DBSIZE
查看当前库 key 列表(慎用)KEYS *
查看服务状态INFO server
查看慢日志SLOWLOG GET 100
手动触发快照BGSAVE
清空当前库(慎用)FLUSHDB
清空全部库(重慎)FLUSHALL

4.6 慢查询分析:从 SLOWLOG 入手

在 Redis 里,执行时间超过某个阈值的命令会被记录到慢查询日志里。排查性能问题时,这个日志价值极高。

先设置慢查询阈值,单位是微秒:

CONFIG SET slowlog-log-slower-than 10000

然后执行SLOWLOG GET 10查看最近的慢命令。如果发现某些KEYS命令或超大集合的SORT操作频繁上榜,说明程序里有不合理的设计,比如用KEYS做模糊匹配,或者把大对象一次性读入内存。慢查询日志是线上性能体检的入口,能帮你快速定位“是哪条命令拖慢了 Redis”。

5. 进阶方向:容器化和主从复制

5.1 Docker 部署 Redis 主从集群

公司里现在很多场景直接用 Docker Compose 编排 Redis。主从复制的基本原理是:一个主节点负责写,多个从节点复制主节点的数据,负责读。这样既能分担读压力,又能做故障切换的基础。

用 Docker 起一主两从,最直观的方式是docker-compose.yml里定义三个服务,全部用同一个 Redis 镜像,从节点启动时通过--replicaof参数指定主节点地址。注意容器之间通信要用服务名而不是localhost,因为每个容器有独立的网络命名空间。实际部署时,主从节点最好放在不同宿主机上,不然一台物理机挂了,主从全灭,谈不上高可用。

主从配好后,你可以在主节点写数据,再到从节点GET验证同步。如果从节点没有数据,先检查主从日志,常见原因是配置文件里replica-read-only设置问题,或者网络不通导致复制中断。

5.2 缓存治理:不是装完就完事

很多人觉得 Redis 装好、数据能写能读就结束了,但真正的难点在缓存治理。所谓治理,是指缓存什么时候写、什么时候失效、缓存穿透和雪崩怎么防。

  • 缓存穿透:查询一个不存在的 key,请求每次都打到数据库。解决方式:缓存空值并设置很短的过期时间,或者用布隆过滤器先在 Redis 前过滤。
  • 缓存击穿:某个热点 key 过期瞬间,大量并发请求直接打到数据库。解决方式:热点数据设置永不过期,后台异步更新;或者加互斥锁,只让一个请求去查数据库。
  • 缓存雪崩:大量 key 在同一时间过期,请求全部落到数据库。解决方式:过期时间加随机值,避免集中失效。

这些点都是 Redis 面试题的高频内容,但更是生产环境必须面对的问题。你只有在 Linux 上真的操作过 Redis、看过内存指标、处理过缓存穿透的报警,才能真正理解“缓存治理”四个字的重量。

5.3 定时备份与恢复演练

数据安全不能只靠 Redis 自身的持久化。我习惯在 Linux 上加一条 cron 定时任务,每天凌晨把 RDB 文件复制到另一块磁盘或备份服务器:

0 2 * * * cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +\%F).rdb

光备份还不够,定期做恢复演练更重要。找一台测试机,把备份文件放回去,启动 Redis,redis-cli DBSIZE看看 key 数量是否和备份时一致。我见过太多人只写备份脚本从不验证恢复,真出问题时才发现备份文件早就损坏了。

恢复时有两种方式:直接把 RDB 文件放到配置目录下启动 Redis,它会自动加载;或者用redis-cli --pipe导入之前导出的文本格式数据。第一种方式更简单,第二种方式适合做数据迁移。

6. 写在最后:一点个人操作体会

我在生产环境排查过太多次 Redis 故障,每次回头复盘,发现绝大多数问题都出在三个地方:配置没搞清楚就启动、生产环境用了KEYS *、持久化策略和业务不匹配。如果你能把 redis.conf 的几个关键项吃透,把redis-cli的常用命令练熟,再配合 systemd 的进程托管和定时备份,那么“linux redis简单操作”这句话你完全接得住。

最后再共享一个小技巧:操作 Redis 时,我会在 redis-cli 里先用INFO看一遍connected_clientsused_memorytotal_commands_processed这些基础指标,几十秒的观察能帮你对当前实例的健康状态有个大致判断。Redis 本身不难,难的是在真实环境里保持敬畏、做足预案。希望这篇能帮你少走一段弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 12:19:36

基于ThinkPHP的企业进销存系统开发:从库存流水到权限控制的完整实践

1. 项目背景与核心目标1.1 为什么选择ThinkPHP做企业进销存我接手这个项目的时候,对方是一家做建材贸易的中小公司,SKU大概有三千多个,每天出入库单据量在两百张左右。原来他们用的是Excel加纸质单据,仓库盘点一次要折腾两天&…

作者头像 李华
网站建设 2026/9/9 12:19:06

2026边缘计算厂商选型指南:从硬件参数到落地避坑

边缘计算这块,这几年咨询我的人特别多。尤其是到了2026年,你会发现一个挺有意思的现象:网上搜"边缘计算公司推荐",出来的信息要么是软文满天飞,要么是参数表堆砌得让人头晕。真到了要做技术选型的时候&#…

作者头像 李华
网站建设 2026/9/9 12:18:13

用C++写一个记事本:从数据结构到Qt GUI的完整实践

简介:一份基于C实现的记事本应用程序工程,面向掌握基础C语法、希望通过实际项目提升文件读写与界面开发能力的开发者,解决从零构建文本编辑器所涉及的文件操作、字符串处理、异常处理与GUI设计等问题。资源为RAR压缩包,共129个文件…

作者头像 李华
网站建设 2026/9/9 12:17:59

Perl unlink模拟测试实战:从Test::MockModule到CORE::GLOBAL重定义

1. 认识unlink:它到底删的是什么写Perl的人,几乎都跟文件操作打过交道,unlink这个函数算是文件删除操作里的标配了。但很多人在实际项目中用着用着就会发现,unlink远没有文档里写得那么轻描淡写。它在Unix/Linux上表现得很直接&am…

作者头像 李华
网站建设 2026/9/9 12:16:32

蚂蚁问题的一个小扩展

之前的博文谈到了蚂蚁问题,现在考虑其变形,要求输出从开始到所有蚂蚁离杆这段时间内的各时间段内的碰撞情况,有碰撞输出所有碰撞,没有则提示未发生碰撞,最后输出碰撞总次数,若整个过程没有发生任何碰撞则提…

作者头像 李华
网站建设 2026/9/9 12:14:47

基于TCP/IP的上位机远程控制拧紧枪方案详解

简介:采用C# Winform 与 TCP/IP 通信实现拧紧枪控制的完整示例工程,上手门槛适中,适合在汽车制造、装配流水线等场景下从事工业设备上位机开发的工程师。项目基于 OpenProtocol 协议封装控制指令,通过 Socket 建立连接、收发报文&…

作者头像 李华