Redis 属于称为键值存储的数据库系列。
键值存储的本质是存储一些数据的能力, 称为键内的值。只有在我们知道的情况下,才能检索此数据 用于存储它的确切密钥。
通常 Redis 它被称为数据结构服务器,因为它具有外部键值 shell,但每个 value 可以包含复杂的数据结构,例如字符串、列表、哈希或有序数据 称为排序集的结构以及像Hyperloglog这样的概率数据结构。
问题是,以这种方式进行增量只会在 有一个客户端使用该密钥。查看如果两个客户端是 同时访问此密钥:
客户端 A 读取计数为 10。
客户端 B 读取计数为 10。
客户端 A 递增 10 并将计数设置为 11。
客户端 B 递增 10 并将计数设置为 11。
我们希望值为 12,但它是 11!这是因为 以这种方式递增值不是原子操作。在 Redis 中调用 INCR 命令将防止这种情况发生,因为它是一个 原子操作。
由单个命令实现的所有 Redis 操作都是原子操作,包括对更复杂的数据结构进行操作的操作。因此,当您使用修改某些值的 Redis 命令时,您不必考虑并发访问。
Redis 还支持几种更复杂的数据结构。第一个我们将 看是一个列表。列表是一系列有序值。一些 与列表交互的重要命令是 RPUSH、LPUSH、LLEN、LRANGE、LPOP 和 RPOP。您可以立即开始使用键作为列表,只要它尚未作为其他类型存在。