学习 Redis5 这一篇就够了---2

530 阅读4分钟

第四章 Redis通用操作

  • KEYS pattern

获取所有匹配pattern参数的Keys。需要说明的是,在我们的正常操作中应该尽量避免对该命令的调用,因为对于大型数据库而言,该命令是非常耗时的,对Redis服务器的性能打击也是比较大的。pattern支持glob-style的通配符格式,如*表示任意一个或多个字符,?表示任意字符,[abc]表示方括号中任意一个字母。匹配模式的键列表。

返回值:返回所有匹配的key。

  • DEL key [key …]

从数据库删除中参数中指定的keys,如果指定键不存在,则直接忽略。还需要另行指出的是,如果指定的Key关联的数据类型不是String类型,而是List、Set、Hashes和Sorted Set等容器类型,该命令删除每个键的时间复杂度为O(M),其中M表示容器中元素的数量。而对于String类型的Key,其时间复杂度为O(1)。

返回值:实际被删除的Key数量。

  • EXISTS key

判断指定键是否存在。

返回值:1表示存在,0表示不存在。

  • MOVE key db

将当前数据库中指定的键Key移动到参数中指定的数据库中。如果该Key在目标数据库中已经存在,或者在当前数据库中并不存在,该命令将不做任何操作。在redis.conf文件中定义了redis的默认库的数据,默认一个redis有16个库,下标为0-15。我们可以使用select 数值来进行库的切换:select 10。

返回值:移动成功返回1,否则不做任何操作返回0。

  • RENAME key newkey

为指定的键重新命名,如果参数中的两个Keys的名字相同,或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。

返回值:操作成功返回OK。

  • RENAMENX key newkey

如果新值不存在,则将参数中的原值修改为新值,其它条件和RENAME一致。

返回值:1表示修改成功,否则0。

  • PERSIST key

如果Key存在过期时间,该命令会将其过期时间消除,使该Key不再有超时,而是可以持久化存储。

返回值:1表示Key的过期时间被移除,0表示该Key不存在或没有过期时间。

  • EXPIRE key seconds

该命令为参数中指定的Key设定超时的秒数,在超过该时间后,Key被自动的删除。如果该Key在超时之前被修改,与该键关联的超时将被移除。

返回值:1表示超时被设置,0则表示Key不存在或不能被设置。

  • EXPIREAT key timestamp

该命令的逻辑功能和EXPIRE完全相同,唯一的差别是该命令指定的超时时间是绝对时间,而不是相对时间。该时间参数是Unix timestamp格式的,即从1970年1月1日开始所流经的秒数。

返回值:1表示超时被设置,0则表示Key不存在或不能被设置。

  • TTL key

获取该键所剩的超时描述。

返回值:返回所剩描述,如果该键不存在或没有超时设置,则返回-1。

  • RANDOMKEY

从当前打开的数据库中随机的返回一个Key。

返回值:返回的随机键,如果该数据库是空的则返回nil。

  • TYPE key

获取与参数中指定键关联值的类型,该命令将以字符串的格式返回。

返回值:返回的字符串为string、list、set、hash和zset(Sorted-Set),如果key不存在返回none。

第五章 Redis事务管理

5.1、Redis事务的两个保证

Redis事务可以一次执行多个命令并且带有以下两个重要的保证:

  • 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  • 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

5.2、Redis事务的三个阶段

Redis一个事务从开始到执行会经历以下三个阶段:

  • 开始事务:MULTI
  • 命令入队
  • 执行事务:EXEC

5.3、Redis事务的常见命令

  • MULTI

Multi命令用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由EXEC命令原子性(atomic)地执行。

返回值:总是返回OK。

  • EXEC

Exec命令用于执行所有事务块内的所有命令。

返回值:事务块内所有命令的返回值,按命令执行的先后顺序排列,当操作被打断时,返回空值nil 。

  • DISCARD

Discard命令用于放弃执行事务块内的所有命令。

返回值:总是返回OK 。

  • WATCH

Watch命令用于监视一个(或多个) key,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

  • UNWATCH

Unwatch命令用于取消 WATCH 命令对所有key的监视。