ON 子句与 WHERE 子句的不同一种更好地理解带有 WHERE … IS NULL 子句的复杂匹配条件的简单方法
Matching-Conditions 与 Where-conditions 的不同
关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒

ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。

如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据

在匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以后,WHERE 子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤。

Read More →

Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。

语法
redis RANDOMKEY 命令基本语法如下:

redis 127.0.0.1:6379> RANDOMKEY
可用版本
>= 1.0.0

返回值
当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。

实例
# 数据库不为空

redis> MSET fruit “apple” drink “beer” food “cookies” # 设置多个 key
OK

redis> RANDOMKEY
“fruit”

redis> RANDOMKEY
“food”

redis> KEYS * # 查看数据库内所有key,证明 RANDOMKEY 并不删除 key
1) “food”
2) “drink”
3) “fruit”

# 数据库为空

redis> FLUSHDB # 删除当前数据库所有 key
OK

redis> RANDOMKEY
(nil)
Redis key(键)

Redis TTL 命令以秒为单位返回 key 的剩余过期时间。

语法
redis TTL 命令基本语法如下:

redis 127.0.0.1:6379> TTL KEY_NAME
可用版本
>= 1.0.0

返回值
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例
# 不存在的 key

redis> FLUSHDB
OK

redis> TTL key
(integer) -2

# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> TTL key
(integer) -1

# 有剩余生存时间的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

Redis key(键)

Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

语法
redis Pttl 命令基本语法如下:

redis 127.0.0.1:6379> PTTL KEY_NAME
可用版本
>= 2.6.0

返回值
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例
# 不存在的 key

redis> FLUSHDB
OK

redis> PTTL key
(integer) -2

# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> PTTL key
(integer) -1

# 有剩余生存时间的 key

redis> PEXPIRE key 10086
(integer) 1

redis> PTTL key
(integer) 6179

Redis key(键)

Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

语法
redis PERSIST 命令基本语法如下:

redis 127.0.0.1:6379> PERSIST KEY_NAME
可用版本
>= 2.2.0

返回值
当过期时间移除成功时,返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0 。

实例
redis> SET mykey “Hello”
OK

redis> EXPIRE mykey 10 # 为 key 设置生存时间
(integer) 1

redis> TTL mykey
(integer) 10

redis> PERSIST mykey # 移除 key 的生存时间
(integer) 1

redis> TTL mykey
(integer) -1

Redis key(键)