Redis的基本使用|青训营笔记

67 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第9天

1. 常用数据类型

字符串(string)

字符串是最简单的数据类型,可以存储任何形式的数据,包括数字、浮点数、布尔值等。

  • SET key value:设置一个键值对。
  • GET key:获取一个键的值。
  • DEL key:删除一个键值对。
  • EXISTS key:判断一个键是否存在。
  • APPEND key value:将值追加到键的末尾。
  • STRLEN key:获取字符串的长度。
  • INCR key:将键的值加 1。
  • DECR key:将键的值减 1。
  • INCRBY key increment:将键的值增加指定值。
  • DECRBY key decrement:将键的值减少指定值。

列表(list)

列表是一个有序的字符串集合,可以存储多个值,每个值都可以重复。列表常用于队列和栈的实现。

  • RPUSH key value1 value2 ...:在列表尾部插入一个或多个值。
  • LPUSH key value1 value2 ...:在列表头部插入一个或多个值。
  • LPOP key:移除并返回列表的第一个元素。
  • RPOP key:移除并返回列表的最后一个元素。
  • LLEN key:返回列表的长度。
  • LRANGE key start stop:获取列表中指定范围的元素。
  • LINDEX key index:获取列表中指定位置的元素。

集合(set)

集合是一个无序的字符串集合,每个元素都不能重复。

  • SADD key member1 member2 ...:向集合中添加一个或多个成员。
  • SMEMBERS key:获取集合中的所有成员。
  • SISMEMBER key member:判断一个成员是否存在于集合中。
  • SCARD key:获取集合的基数。
  • SREM key member1 member2 ...:从集合中删除一个或多个成员。

哈希表(hash)

哈希表是一个键值对的集合,每个键都指向一个值。

  • HSET key field value:设置哈希表中的字段和值。
  • HGET key field:获取哈希表中指定字段的值。
  • HGETALL key:获取哈希表中所有字段和值。
  • HDEL key field1 field2 ...:删除哈希表中的一个或多个字段。
  • HEXISTS key field:判断哈希表中是否存在指定字段。
  • HLEN key:获取哈希表中的字段数。

有序集合(Sorted Set)

  • 有序集合中的每个元素都关联有一个分数,根据这个分数进行排序。
  • 每个元素都必须是唯一的,但分数可以重复。
  • 有序集合中的元素是无序的,但可以根据分数进行排序。
  • 支持通过分数范围或者排名来查询元素。
  • 支持插入、删除、更新元素的操作。
ZADD key score1 member1 [score2 member2] # 添加一个或多个成员,以及对应的分数
ZRANGE key start stop [WITHSCORES] # 根据排名范围查询元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # 根据分数范围查询元素
ZCARD key # 获取有序集合的元素个数
ZSCORE key member # 获取某个元素的分数
ZRANK key member # 获取某个元素的排名

2. 订阅和发布

订阅和发布(Pub/Sub)是Redis提供的一种消息传递机制,它允许客户端订阅一些感兴趣的消息,当消息发布者发布一个新的消息时,所有订阅该消息的客户端都会收到该消息的副本。

Redis中的订阅和发布主要涉及以下三个命令:

  • SUBSCRIBE channel [channel ...]:订阅一个或多个消息频道。
  • UNSUBSCRIBE [channel [channel ...]]:取消订阅一个或多个消息频道。如果没有指定频道,则取消订阅所有频道。
  • PUBLISH channel message:向指定的消息频道发布一条消息。

3. 事务机制

Redis事务是一组命令的集合,这些命令将按顺序执行,类似于数据库中的事务。在 Redis 中,事务是通过 MULTI、EXEC、DISCARD、WATCH 四个命令来实现的,使用事务可以分为两个阶段。

  • 组队阶段,使用MULTI开启组队阶段,在此之后的命令都被存到队列中,但是不会执行,如果在这一阶段命令错误,那么整个事务都会被取消
  • 执行阶段,使用EXEC按顺序执行队列中的任务,在这个阶段如果发送命令错误,那么该命令不会被执行,其它命令可以正常执行,不会发生事务的回滚

DISCARD命令用于在组队阶段取消事务

WATCH命令是Redis中的乐观锁实现,在开启事务之前,可以使用WATCH 命令监视一个或多个键,如果其中一个键被修改,那么 EXEC 命令执行时整个事务都会被取消,可以保证在执行事务时数据不被其他客户端修改。