YStudio Y++

Redis类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库。路径:支持库 → 扩展类库 → Redis类。

类型名写「Redis类」。声明时自动创建。

在 IDE 里开通 Redis类 后才能编译。编进用户程序之后,运行时不再检查授权。

协议为 RESP2,经 TCP 连接本机或远程 Redis。默认端口 6379。文本按 UTF-8 收发。

不需要配合 HTTP / MQTT 等其它类。它是独立的 Redis 客户端;本机要有 Redis 服务(或冒烟目录里的模拟器)。

用 Y++ 的 TCP类 也能自己写简易 RESP 模拟服务(监听端口、按行解析 *N/$len),冒烟目录的 redis_mock.exe 就是这种思路的独立小程序。

连接

Redis类 r
如果 (!r.连接("127.0.0.1", 6379, "", 0)) {
    输出(r.取错误())
}
  • 密码留空:不发送 AUTH。
  • 库号大于 0:连接成功后 SELECT。库号 0 不额外选择(仍可用 选择库(0))。
  • 失败看 取错误()。
  • 是否已连接() / 关闭() / 重置():重置会断开并清空错误缓冲,句柄可再连接。

常用命令

方法 Redis
置文本(键, 值, 秒) SET;秒大于 0 时 SETEX
置新键(键, 值) SET NX;仅当键不存在时写入
置已有键(键, 值) SET XX;仅当键已存在时覆盖
追加(键, 值) APPEND,返回字节长度
取文本(键) / 取并删(键) GET / GETDEL
批量置(配对文本) / 批量取(键列表) MSET / MGET(键与值各占一行)
删除(键) DEL
是否存在(键) EXISTS
置过期 / 置毫秒过期 / 持久化 EXPIRE / PEXPIRE / PERSIST
取剩余时间 / 取剩余毫秒 TTL / PTTL(无过期 -1,不存在 -2)
递增 / 递减 INCR(BY) / DECR(BY)
取类型 / 取键长 / 改名 TYPE / STRLEN / RENAME
库键数() DBSIZE
置哈希 / 取哈希 / 哈希存在 / 取哈希全部 / 删哈希 / 哈希长度 / 哈希递增 HSET / HGET / HEXISTS / HGETALL / HDEL / HLEN / HINCRBY
列表头加入 / 列表加入 LPUSH / RPUSH
列表弹出 / 列表尾弹出 / 列表长度 / 列表取范围 LPOP / RPOP / LLEN / LRANGE
取列表项 / 置列表项 / 裁剪列表 LINDEX / LSET / LTRIM
集合加入 / 集合删除 / 集合存在 / 取集合全部 / 集合长度 SADD / SREM / SISMEMBER / SMEMBERS / SCARD
取匹配键(模式) KEYS;键很多时会堵住服务,只适合少量键
发布(频道, 消息) PUBLISH
选择库(库号) SELECT
探测() PING
重置() 断开并清空缓冲
执行(命令行) 按空格拆成参数

执行 不处理引号。参数里有空格时,用上面的专用方法。

范围

  • 阻塞式请求,超时约 8 秒。
  • 不做订阅(SUBSCRIBE)长连接读循环。
  • 不做 TLS、哨兵和集群重定向。

冒烟

  1. 双击 _start_mock.bat(启动同目录 redis_mock.exe)→ 127.0.0.1:16379,窗口勿关。
  2. 打开工程 F5,点「跑全部」。
  3. 真 Redis:端口改 6379。Windows 可用 Memurai、Docker redis:7,或 WSL redis-server。