5种基础数据结构
string、list、hash、set、zset
String
字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体使用JSON序列化成字符串,然后将序列化后的字符串放进Redis来缓存。
Redis的字符串是动态字符串,是可以修改的字符串,内部结构的实现类似于Java 的 Array List,采用预分配冗余空间的方式来减少内存的频繁分配。
当字符串长度小于1MB时,扩容都是加倍现有的空间。如果字符串长度超过1MB,扩容时一次只会多扩1MB的空间。需要注意的是字符串最大长度为512MB。
list 列表
Redis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n)。Redis 的列表结构常用来做异步队列使用。将需要延后处理的任务结构体序列化成字符串,塞进Redis的列表,另一个线程从这个列表中轮询数据进行处理。
队列 右进左出
队列是先进先出的数据结构,常用语消息排队和异步逻辑处理,它会确保元素访问的顺序性。