面试题答案
一键面试SET命令对内存管理的影响
- 原理:当执行
SET key value
命令时,如果键key
不存在,Redis会在内存中分配空间来存储这个新的键值对。键和值都会占用一定的内存空间。其中,键是一个字符串对象,值的类型取决于具体设置的值(如字符串、哈希、列表等不同数据结构),不同类型的数据结构有不同的内存分配方式。例如,简单字符串值直接存储字符串内容,对于复杂数据结构(如哈希)会按照相应的数据结构组织方式分配内存。如果键key
已经存在,Redis会先释放旧值所占用的内存空间,然后再为新值分配内存空间。 - 举例:假设初始状态Redis内存中没有任何数据,执行
SET name "John"
,Redis会为键name
和值"John"
分配内存。如果接着执行SET name "Jane"
,会先释放"John"
占用的内存,再为"Jane"
分配内存。
DEL命令对内存管理的影响
- 原理:
DEL key [key ...]
命令用于删除一个或多个键。当执行DEL
命令删除一个键时,Redis会释放该键及其对应值所占用的内存空间。如果删除的键不存在,不会产生内存操作。如果删除多个键,Redis会依次释放每个键值对占用的内存。 - 举例:执行
SET age 30
后,Redis为age
键和30
值分配了内存。接着执行DEL age
,Redis会释放age
键和30
值所占用的内存空间,从而减少Redis所使用的内存量。