[hiredis 的Redis执行语句返回结果类型全说明

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: [hiredis 的Redis执行语句返回结果类型全说明
/* When an error occurs, the err flag in a context is set to hold the type of
 * error that occurred. REDIS_ERR_IO means there was an I/O error and you
 * should use the "errno" variable to find out what is wrong.
 * For other values, the "errstr" field will hold a description. */
#define REDIS_ERR_IO 1 /* Error in read or write */
#define REDIS_ERR_EOF 3 /* End of file */
#define REDIS_ERR_PROTOCOL 4 /* Protocol error */
#define REDIS_ERR_OOM 5 /* Out of memory */
#define REDIS_ERR_TIMEOUT 6 /* Timed out */
#define REDIS_ERR_OTHER 2 /* Everything else... */

#define REDIS_REPLY_STRING 1
#define REDIS_REPLY_ARRAY 2
#define REDIS_REPLY_INTEGER 3
#define REDIS_REPLY_NIL 4
#define REDIS_REPLY_STATUS 5
#define REDIS_REPLY_ERROR 6
#define REDIS_REPLY_DOUBLE 7
#define REDIS_REPLY_BOOL 8
#define REDIS_REPLY_MAP 9
#define REDIS_REPLY_SET 10
#define REDIS_REPLY_ATTR 11
#define REDIS_REPLY_PUSH 12
#define REDIS_REPLY_BIGNUM 13
#define REDIS_REPLY_VERB 14

这段代码是C语言中的宏定义,用于在Redis客户端hiredis中定义一些错误类型和回复类型。下面是对这些宏的解释:

基于您提供的描述,我将为每个错误类型宏和回复类型宏添加对应的数字,并进行一些格式上的调整以增强可读性:

错误类型宏(Error Type Macros):

  • REDIS_ERR_IO: 表示发生了输入/输出错误,此时应该使用 errno 变量来获取具体的错误信息。 数字: 1
  • REDIS_ERR_EOF: 表示遇到了文件结束标志,通常用于检测流的结束。 数字: 3
  • REDIS_ERR_PROTOCOL: 表示协议错误,可能是由于Redis协议的不匹配或损坏。 数字: 4
  • REDIS_ERR_OOM: 表示内存不足。 数字: 5
  • REDIS_ERR_TIMEOUT: 表示操作超时。 数字: 6
  • REDIS_ERR_OTHER: 表示其他类型的错误。 数字: 2

回复类型宏(Reply Type Macros):

  • REDIS_REPLY_STRING: 表示返回的是一个字符串。 数字: 1
  • REDIS_REPLY_ARRAY: 表示返回的是一个数组。 数字: 2
  • REDIS_REPLY_INTEGER: 表示返回的是一个整数。 数字: 3
  • REDIS_REPLY_NIL: 表示没有返回值,类似于空或null。 数字: 4
  • REDIS_REPLY_STATUS: 表示返回的状态信息,通常是一个简单响应。 数字: 5
  • REDIS_REPLY_ERROR: 表示返回了一个错误。 数字: 6
  • REDIS_REPLY_DOUBLE: 表示返回的是一个双精度浮点数。 数字: 7
  • REDIS_REPLY_BOOL: 表示返回的是一个布尔值。 数字: 8
  • REDIS_REPLY_MAP: 表示返回的是一个映射(键值对集合)。 数字: 9
  • REDIS_REPLY_SET: 表示返回的是一个集合。 数字: 10
  • REDIS_REPLY_ATTR: 表示返回的是属性。 数字: 11
  • REDIS_REPLY_PUSH: 表示返回的是一个推送通知。 数字: 12
  • REDIS_REPLY_BIGNUM: 表示返回的是一个大整数。 数字: 13
  • REDIS_REPLY_VERB: 表示返回的是一个详细描述。 数字: 14

请注意,错误类型宏和回复类型宏的数字是唯一的,但是回复类型宏中的 REDIS_REPLY_STRING 和错误类型宏中的 REDIS_ERR_IO 都使用了数字 1。这在实际使用中可能会导致混淆,因此在具体的实现和文档中应该有明确的区分。

这些宏定义使得hiredis库的用户可以在处理Redis服务器的响应或错误时,能够根据这些预定义的类型进行相应的操作。例如,如果一个函数返回REDIS_ERR_IO,用户知道需要检查errno来确定具体的错误原因。同样,如果一个函数返回REDIS_REPLY_ARRAY,用户知道他们正在处理一个数组类型的回复。


分享一个有趣的 学习链接


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
22天前
|
存储 NoSQL Redis
蓝易云 - Redis之bitmap类型解读
需要注意的是,虽然bitmap可以高效地存储和计算大量的位,但是它也有一些局限性,例如,它不能直接获取或设置某一范围内的所有位,也不能直接获取或设置多个不连续的位。
11 2
|
2天前
|
Java
Redis19----RedisTemplate操作Hash类型
Redis19----RedisTemplate操作Hash类型
|
2天前
|
NoSQL Redis
Redis11-----Sortedset类型,SortedSet底层是由数据树实现的,SortedSet删除同学,获取Amy同学分数,获取Rose同学排名,查询80分以下的学生,给Amy同学加2分
Redis11-----Sortedset类型,SortedSet底层是由数据树实现的,SortedSet删除同学,获取Amy同学分数,获取Rose同学排名,查询80分以下的学生,给Amy同学加2分
|
2天前
|
存储 NoSQL Java
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
|
2天前
|
NoSQL Java Redis
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
|
2天前
|
存储 Java
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
|
2天前
|
存储 NoSQL Redis
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
|
1月前
|
机器学习/深度学习 缓存 NoSQL
【Redis】 关于 Redis 哈希类型
【Redis】 关于 Redis 哈希类型
|
1月前
|
机器学习/深度学习 XML NoSQL
【Redis】 String 字符串类型常见命令
【Redis】 String 字符串类型常见命令
|
1月前
|
NoSQL Redis
【Redis】 关于 Redis 有序集合类型
【Redis】 关于 Redis 有序集合类型