
SRH是一个Redis代理和连接池,使用HTTP而非Redis二进制协议。本项目旨在与Upstash完全兼容,并支持Upstash支持的任何Redis版本。
SRH测试每晚针对@upstash/redis JavaScript包运行。但Upstash的Redis实现与官方Redis代码存在一些细微差异:
UNLINK命令在未提供键时,Upstash不会抛出错误,而Redis/SRH会抛出错误ZRANGE命令中,Upstash无需提供BYSCORE或BYLEX即可使用LIMIT参数,而Redis/SRH若不提供则会抛出错误RedisJSON实现在响应返回方面存在一些细微差异。因此,如果测试使用JSON命令的Upstash实现,不建议将SRH与Redis Stack一起使用。若不使用任何JSON命令,则无影响@upstash/redis SDK使用的body方法管道和事务端点同样已实现,且仅使用body数据。可查看Upstash Rest API文档了解更多。
响应编码也已完全实现,@upstash/redis SDK默认启用该功能。可查看Upstash哈希响应文档了解更多。
@upstash/redis SDK配合使用只需将REST URL和令牌设置为SRH实例的运行地址。例如:
tsimport {Redis} from '@upstash/redis'; export const redis = new Redis({ url: "http://localhost:8079", token: "example_token", });
若本地运行Redis服务器,可启动连接到该服务器的SRH容器。以下示例中,SRH将运行在8080端口:
bashdocker run \ -it -d -p 8080:80 --name srh \ -e SRH_MODE=env \ -e SRH_TOKEN=your_token_here \ -e SRH_CONNECTION_STRING="redis://your_server_here:6379" \ hiett/serverless-redis-http:latest
若需在Kubernetes中运行,以下配置包含基本设置。但请务必阅读配置选项,因为可设置代理多个Redis服务器:
ymlversion: '3' services: redis: image: redis ports: - '6379:6379' serverless-redis-http: ports: - '8079:80' image: hiett/serverless-redis-http:latest environment: SRH_MODE: env SRH_TOKEN: example_token SRH_CONNECTION_STRING: 'redis://redis:6379' # 使用`redis`主机名,因为它们在同一Docker网络中
SRH可在GitHub Actions中作为作业服务的容器运行。只需启动Redis服务器和SRH,无需担心Redis实例未就绪的竞争条件,因为SRH在收到第一个命令时才创建Redis连接:
ymlname: 测试@upstash/redis兼容性 on: push: workflow_dispatch: env: SRH_TOKEN: example_token jobs: container-job: runs-on: ubuntu-latest container: denoland/deno services: redis: image: redis/redis-stack-server:6.2.6-v6 # 6.2是Upstash兼容的Redis版本 srh: image: hiett/serverless-redis-http:latest env: SRH_MODE: env # 使用env模式,因为仅连接一个服务器 SRH_TOKEN: ${{ env.SRH_TOKEN }} SRH_CONNECTION_STRING: redis://redis:6379 steps: - name: 检出代码 uses: actions/checkout@v3 with: repository: upstash/upstash-redis - name: 运行@upstash/redis测试套件 run: deno test -A ./pkg env: UPSTASH_REDIS_REST_URL: http://srh:80 UPSTASH_REDIS_REST_TOKEN: ${{ env.SRH_TOKEN }}
SRH支持多个Redis服务器,并可配置任意数量的连接池。闲置15分钟后将关闭未使用的池,收到下一个命令时会重建池。
上述示例使用环境变量指定SRH连接的Redis服务器。也可使用配置JSON文件,创建任意数量的连接,请求中提供的令牌将决定使用哪个池。
创建JSON文件(示例命名为tokens.json):
json{ "example_token": { "srh_id": "some_unique_identifier", "connection_string": "redis://localhost:6379", "max_connections": 3 } }
可在基础对象中添加任意数量的条目,并为每个池配置最大连接数。srh_id用于内部跟踪实例,可设为任意值。
创建文件后,将其挂载到Docker容器的/app/srh-config/tokens.json路径。示例Docker命令:
docker run -it -d -p 8079:80 --name srh --mount type=bind,source=$(pwd)/tokens.json,target=/app/srh-config/tokens.json hiett/serverless-redis-http:latest
| 名称 | 默认值 | 说明 |
|---|---|---|
| SRH_MODE | file | 可选值:env或file。若为file,参见同时连接多个Redis服务器;若为env,需提供以下环境变量 |
| SRH_TOKEN | <SRH_MODE=env时必填> | 设置Rest API所需的令牌 |
| SRH_CONNECTION_STRING | <SRH_MODE=env时必填> | 设置Redis服务器的连接字符串 |
| SRH_MAX_CONNECTIONS | 3 | 仅在SRH_MODE=env时使用 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务