不同数据结构的差异在于value的结构不一样
类型 | 对于Java | 结构 | 应用 |
---|---|---|---|
string(字符串) | ArrayList | 动态字符串提前扩容 | 存储序列化的对象 |
list(列表) | LinkedList | 链表 | 可做队列、栈;保存最新的10个用户,进来一个就删除一个,保持最新用户 |
hash(字段) | HashMap | 可以分别的存用户的信息 | |
set(集合) | HashSet | value为null的HashMap | 存中奖用户id,因为不可重复的特点 |
zset(有序集合) | SortedSet和HashMap的结合 | value有权重值的set | 可以value为用户id,score为分数,按分数对用户排序操作(zrange 0 -1) |
string(字符串)
- 相当于Java中的ArrayList
- redis中的字符串是动态字符串,是可以修改的字符串
- 动态分配内存
- 字符串长度小于1MB时,扩容是加倍现有空间;
- 字符串大于1MB时,每次增加1MB;
- 字符串最大长度是512MB
- incr最大值是Long.Max
- 保存完整序列化对象
list(列表)
- Java中的LinkedList
- 可做队列: 右push + 左pop
- 可做栈: 右push + 右pop
- zipList: 数量较少时,连续的地址空间存储,节约头尾指针的内存空间
- 应用: 保存最新的10个用户,进来一个新的就删除一个旧的;得到最新10个用户
hash(字典)
- Java中的HashMap
- 单独存储用户信息的每个字段
set(集合)
- 中奖用户id,不可重复
Java中的HashSet
zset(有序列表)
- value带有权重的set