四十、Redis 类型检查与命令多态
Redis 中用于操作键的命令基本上可以分为两种类型。 其中一种命令可以对任何类型的键执行, 比如说 DEL 命令、 EXPIRE 命令、 RENAME 命令、 TYPE 命令、 OBJECT 命令, 等等。 举个例子, 以下代码就展示了使...
Redis 中用于操作键的命令基本上可以分为两种类型。 其中一种命令可以对任何类型的键执行, 比如说 DEL 命令、 EXPIRE 命令、 RENAME 命令、 TYPE 命令、 OBJECT 命令, 等等。 举个例子, 以下代码就展示了使...
有序集合的编码可以是 ziplist 或者 skiplist 。 ziplist 编码的有序集合对象使用压缩列表作为底层实现, 每个集合元素使用两个紧挨在一起的压缩列表节点来保存, 第一个节点保存元素的成员(member), 而第二个元素则...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
集合对象的编码可以是 intset 或者 hashtable 。 intset 编码的集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面。 举个例子, 以下代码将创建一个如图 8-12 所示的 intset 编...
哈希对象的编码可以是 ziplist 或者 hashtable 。 ziplist 编码的哈希对象使用压缩列表作为底层实现, 每当有新的键值对要加入到哈希对象时, 程序会先将保存了键的压缩列表节点推入到压缩列表表尾, 然后再将保存了值的压缩...
列表对象的编码可以是 ziplist 或者 linkedlist 。 ziplist 编码的列表对象使用压缩列表作为底层实现, 每个压缩列表节点(entry)保存了一个列表元素。 举个例子, 如果我们执行以下 RPUSH 命令, 那么服务器...
字符串对象的编码可以是 int 、 raw 或者 embstr 。 如果一个字符串对象保存的是整数值, 并且这个整数值可以用 long 类型来表示, 那么字符串对象会将整数值保存在字符串对象结构的 ptr属性里面(将 void* 转换成 l...
Redis 使用对象来表示数据库中的键和值, 每次当我们在 Redis 的数据库中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键(键对象), 另一个对象用作键值对的值(值对象)。 举个例子, 以下 SET 命令在数据...
压缩列表是一种为节约内存而开发的顺序型数据结构。 压缩列表被用作列表键和哈希键的底层实现之一。 压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数值。 添加新节点到压缩列表, 或者从压缩列表中删除节点, 可能会引发连锁更新操作,...
表 7-4 列出了所有用于操作压缩列表的 API 。 表 7-4 压缩列表 API 函数 作用 算法复杂度 ziplistNew 创建一个新的压缩列表。 ziplistPush 创建一个包含给定值的新节点, 并将这个新节点添加到压缩列表的表...
前面说过, 每个节点的 previous_entry_length 属性都记录了前一个节点的长度: 如果前一节点的长度小于 254 字节, 那么 previous_entry_length 属性需要用 1 字节长的空间来保存这个长度值。 如...