Redis是一个开源的使用ANSI C语言编写的键值对存储系统,最初由 Salvatore Sanfilippo 在 2009 年开发,在当前应用中可以用作数据库、缓存和消息代理。Redis中也可以存储空值,但空值在不同的情况下会有不同的处理方式,本文将介绍Redis中空值的设置与处理。
Redis中可以存储空值,普通字段是在存储数据之前设置一个空值,如:
SET mykey ""
以上代码将 mykey 的值设置为空值,此时 mykey 的值已经不再是 NULL,而是一个真实的空值。
在 Redis 中检查空值的常见方法是使用 EXISTS 命令,它会返回 0 如果此键不存在,包括键的值被设置为空值,如:
EXISTS mykey
0
由于 Redis 的应用涉及键值对,所以 EXISTS 命令会在检查键是否存在的同时也检查键的值是否是空值。
空值会在不同的情况下有不同的处理方式,当调用 GET 命令时,如果键的值被设置为空值,Redis 会返回一个 nil 结果,通过使用 EXISTS 命令可以知晓空值的存在,如:
GET mykey
nil
而当在 SET 命令中设置一个已经存在的键值时,会创建一个新的键值,同时将原来键值的旧值被抹去(被覆盖),即使旧值是一个空值,也是如此,如:
SET mykey "newvalue"
OK
以上代码设置 mykey 的新值为 “newvalue”,之前 mykey 所对应的空值也被覆盖。
另外值得注意的是,如果对空值调用 DEL 命令或 INCRE 命令,Redis 会报出一个错误,所以 EXISTS 命令在处理 Redis 的空值时使用的比较多。
总结起来,Redis中空值的设置是使用 SET 命令,处理的话,可以使用 EXISTS 命令进行检查,应尽量避免使用 DEL 和 INCR 等命令来操作空值。