这是我参与「第五届青训营」伴学笔记创作活动的第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 命令执行时整个事务都会被取消,可以保证在执行事务时数据不被其他客户端修改。