
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/github/v/release/redislabsmodules/redis-state-machine?label=latest](https://github.com/redislabsmodules/redis-state-machine/releases/latest) https://img.shields.io/badge/dockerhub-redislabs/redisstatemachine-blue](https://hub.docker.com/r/redislabs/redisstatemachine/tags/)
一个https://redis.io/docs/modules%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E7%BB%B4%E6%8A%A4%E7%8A%B6%E6%80%81%E6%9C%BA%E3%80%82
注意:此模块为实验性项目,正在积极开发中。
redis-state-machine是一个扩展Redis功能的模块,允许用户在Redis服务器端定义和管理状态机。状态机以JSON格式存储,包含状态映射、当前状态和初始状态,支持状态转换规则配置及状态变更操作,适用于需要状态跟踪、工作流控制或有限状态机实现的场景。
SM.TEMPLATE、SM.SET、SM.GET、SM.MUTATE等命令操作状态机最简单的使用方式是拉取Docker镜像并运行:
bashdocker run -p 6379:6379 -it docker.xuanyuan.run/redislabs/redisstatemachine:edge
上述命令会启动一个包含状态机模块的Redis实例,监听默认6379端口。
获取状态机模板
使用SM.TEMPLATE命令获取状态机模板:
bashredis-cli SM.TEMPLATE
返回的模板结构如下:
json{"current":"","map":{},"initial":""}
current:当前状态map:状态转换规则映射(键为当前状态,值为可转换的目标状态列表)initial:初始状态创建状态机
使用SM.SET命令创建状态机,需指定状态机名称和JSON格式的状态机定义:
bashredis-cli SM.SET mymachine '{"current":"","map":{},"initial":"foo"}'
获取状态机信息
使用SM.GET命令查看状态机详情:
bashredis-cli SM.GET mymachine
若未指定current状态,将自动使用initial状态作为当前状态,返回结果:
json{"current":"foo","map":{},"initial":"foo"}
以下示例使用Python和https://github.com/redis/redis-py%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%93%8D%E4%BD%9C%E7%8A%B6%E6%80%81%E6%9C%BA%E3%80%82
准备工作
pythonimport redis import json # 连接Redis(确保已启动包含状态机模块的Redis实例) r = redis.Redis(decode_responses=True) # 获取状态机模板 tmpl = json.loads(r.execute_command("SM.TEMPLATE"))
定义状态机
创建一个名为mystatemachine的状态机,初始状态为bar,状态转换规则:
bar可转换至blee和booboo可转换至bleepythontmpl['initial'] = 'bar' tmpl['map'] = {"bar": ["blee", "boo"], "boo": ["blee"]} # 保存状态机 r.execute_command("SM.SET", "mystatemachine", json.dumps(tmpl))
状态转换操作
使用SM.MUTATE命令进行状态转换:
转换至无效状态(返回None):
pythonx = r.execute_command("SM.MUTATE", "mystatemachine", "notastate") print(x) # 输出: None
转换至有效状态(返回OK):
pythonx = r.execute_command("SM.MUTATE", "mystatemachine", "blee") print(x) # 输出: OK
查看状态机当前状态
pythonstate_machine = r.execute_command("SM.GET", "mystatemachine") print(state_machine) # 输出: {"current":"blee","map":{"bar":["blee","boo"],"boo":["blee"]},"initial":"bar"}
完整命令集可查看https://github.com/redislabsmodules/redis-state-machine/blob/main/commands.json%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%BF%E7%94%A8%E6%B5%8B%E8%AF%95%E5%8F%AF%E5%8F%82%E8%80%83https://github.com/redislabsmodules/redis-state-machine/blob/main/tests/test_commands.py%E3%80%82
bashmake run
模块测试基于集成测试,使用pytest和Python:
创建虚拟环境并安装依赖:
bashpython -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r tests/requirements.txt
运行测试:
bashpytest
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务