Redis 类型检查和命令多态

Redis中用于操作键的命令基本可以分为2类。


其中一种是可以对任何类型的键执行,比如DEL,EXPIRE,RENAME,TYPE,OBJECT,TTL等命令。


另一种只能对特定的键执行,比如:

SET,GET,APPEND,STRLEN 等仅限用于字符串的键类型;

HDEL,HSET,HGET,HLEN 等仅限用于哈希键类型;

RPUSH,LPOP,LINSERT,LLEN 等仅限用于列表键类型;

SADD,SPOP,SINTER,SCARD 等仅限用于集合键类型;

ZADD,ZCARD,ZRANK,ZSCORE 等仅限用于有序集合键类型;


在执行一个类型特定命令之前,Redis会先检查输入键类型是否正确,然后再决定是否执行命令。

如果键名称正确,再检查键对象是否是执行命令所需的类型,不是的话就返回一个类型错误。


多态命令的实现除了检查键类型和命令是否匹配外,还会检查键的至对象所使用的编码。例如,LLEN命令。

如果列表对象编码为ziplist,,说明对象为压缩列表,程序使用ziplistlen作为底层实现返回列表长度。

如果列表对象编码为linkedlist,说明对象为双端链表,程序使用listLength作为底层实现返回链表长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值