Redis实战学习总结(二)---Redis命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a770794164/article/details/91564462

2.1 字符串

在redis里,字符串可以存储以下3种类型的值:

  1. 字节串(byte string)
  2. 整数
  3. 浮点数

用户可以对存储着整数或者浮点数的字符串进行自增或者自减操作,在有需要的时候,Redis还会将整数转换成浮点数。如果用户对一个不存在的键或者一个保存了空串的键执行自增或者自减操作,那么Redis在执行操作时会将这个键的值当做0来处理。如果用户尝试对一个值无法被解释为整数或者浮点数的字符串执行自增或者自减操作,那么Redis将向用户返回一个错误。
来自redis实战
举例:
字符串操作1
Redis还拥有对字节串的其中一部分内容进行读取或者写入的操作。
来自redis实战
举例(“!”是编码为33的字符):
字符串操作2

2.2 列表

列表是由多个字符串值组成的有序序列结构。

2.2.1常用命令:

来自redis实战
list操作1

2.2.2 阻塞弹出命令和元素移动命令

来自redis实战
在这里插入图片描述
当列表不包含任何元素时,阻塞弹出操作会在给定的时限内等待可弹出的元素出现,并在时限到达后返回空。

3.3 集合

Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速地对集合执行添加元素操作、移除元素操作以及检查一个元素是否存在于集合里。
常用命令:
来自redis实战
set操作1
组合和处理多个集合的命令:
来自redis实战来自redis实战
set操作2

3.4 散列

Redis的散列可以让用户将多个键值对存储到一个Redis键里面。
常用命令:
来自redis实战
hash操作1
来自redis实战
hash操作2

3.5 有序集合

和散列存储着键与值之间的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序地获取或扫描成员和分值的命令。
常用命令(排名从0开始):
来自redis实战
操作1
有序集合的范围型数据获取命令和范围型数据删除命令,以及并集命令和交集命令:
来自redis实战
命令会将集合看作是成员分值全为1的有序集合来处理。
操作2

3.6 发布与订阅

一般来说,发布与订阅(又称pub/sub)的特点是订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息。每当有消息被发送至给定频道时,频道的所有订阅者都会受到消息。我们也可以把频道看作是电台,其中订阅者可以同时收听多个电台,而发送者则可以在任何电台发送消息。
来自redis实战
来自redis实战
发布与订阅模式存在两个问题:

  1. 系统的稳定性。对于旧版Redis来说,如果一个客户端订阅了某个或某些频道,但它读取消息的速度却不够快的话,那么不断积压的消息就会使得Redis输出缓冲区的体积变得越来越大,这可能导致Redis的速度变慢,甚至直接崩溃。这也可能导致Redis被系统强制杀死,甚至导致操作系统本身不可用。新版的Redis不会出现这种问题,因为它会自动断开不符合client-output-buffer-limit pubsub配置选项要求的订阅客户端。
  2. 数据传输的可靠性。任何网络系统在执行操作时都可能会遇上断线情况,而断线产生的连接错误通常会使得网络连接两端中的其中一段进行重新连接。但是如果客户端在执行订阅操作的过程中断线,那么客户端将丢失在断线期间发送的所有信息,因此依靠频道来接收消息的用户可能会对Redis提供的publish命令和subscribe命令的语义感到失望。

3.7 其他命令

  1. 可以同时处理字符串、集合、列表和散列的sort命令
  2. 用于实现基本事务特性的multi命令和exec命令
  3. 自动过期命令

3.7.1 排序

来自redis实战
使用sort命令提供的选项可以实现以下功能:
根据降序而不是默认的升序来排序元素;将元素看做是数字来进行排序,或者将元素看作是二进制字符来进行排序;使用被排列元素之外的其他值作为权重来进行排序,甚至可以从输入的列表、集合、有序集合以外的其他地方进行取值。
排序

3.7.2 基本的Redis事务

有时候为了同时处理多个结构,我们需要向Redis发送多个命令。尽管Redis有几个可以在两个键直接复制或者移动元素的命令,但却没有那种可以在两个不同类型之间移动元素的命令(虽然zunionstore命令将元素从一个集合复制到一个有序集合)。为了对相同或者不同类型的多个键执行操作,Redis有5个命令可以让用户在不被打断(interruption)的情况下对多个键执行操作,它们分别是watch、multi、exec、unwatch和discard。
Redis的基本事务(basic transaction)需要用到multi和exec命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库那种可以在执行的过程中进行回滚(rollback)的事务不同,在Redis里面,被multi命令和exec命令包围的所有命令会一个接一个地执行,直到所有命令都执行完毕为止。当一个事务执行完毕之后,Redis才会处理其他客户端的命令。
要在Redis里面执行事务,我们首先需要执行multi命令,然后输入那些我们想要在事务里面执行的命令,最后再执行exec命令。当Redis从一个客户端那里接收到multi命令时,Redis会将这个客户端之后发送的所有命令都放入到一个队列里面,直到这个客户端发送exec命令为止,然后Redis就会在不被打断的情况下,一个接一个地执行存储在队列里的命令。

3.7.3 键的过期时间

在使用Redis存储数据的时候,有些数据可能在某个时间点之后就不再有用了,用户可以使用del命令显式地删除这些无用数据,也可以通过Redis的过期时间(expiration)特性来让一个键在给点的时限(timeout)之后自动被删除。当我们说一个键“带有生存时间(time to live)”或者一个键“会在特定时间之后过期(expire)”时,我们指的是Redis会在这个键的过期时间到达时自动删除该键。
注意:键的过期命令只能为整个键设置过期时间,而没办法为键里面的单个元素设置过期时间。可以使用带有时间戳的有序集合来实现针对单个元素的过期操作。
来自redis实战
操作

猜你喜欢

转载自blog.csdn.net/a770794164/article/details/91564462