已经看完redis的5种数据结构(在redis 5之后,新增stream数据结构),作为java程序员,总想把redis的数据结构和java里的类型进行对比,遂成本文
一、数据结构对比
redis数据结构 | java数据结构 |
---|---|
String | Map<String,String> |
Hash | Map<String,Map<String,String>> |
List | Map<String,List< String >> 里面list 有序链表 |
Set | Map < String , Set< String >> 里面set元素不能重复且无序 |
zset | Map < String , Sort Set< String >> 里面 Sort Set 元素有序且不能重复 |
reids数据存储的结构统一都是 Key/Value 结果,而Key统一都是String类型的,即Key针对所有的Redis数据类型都是必须的,而通常所说的Redis的数据类型,指代的都是Value所存储的类型。
1.String字符串类型-类比Java中String类型
-
相比Java中的类型,可以这样理解 Map<String,Object> ,Key是String类型的,Value是Java中所有的基本类型都可以。
-
在Java中String类型的数字是可以和int,long,folat等类型相互转换的,所以在redis中String类型有时也可以作为Java中的整数或者浮点数类型使用
2.Hash散列类型-类比Java中的HashMap类型
- 相比Java中的类型,可以这样理解 Map<String,Map<String,Object>> Key是外层Map的键,Value是外层Map的值;而在redis中Hash散列类型中的field是里层Map的键,redis中散列类型中真正的value是里层Map的值
3.List列表类型-类比Java中List类型
- 相比Java中的类型,可以这样理解 Map<String,List> Key是String类型的,Value是Java中List类型的。特点也和Java中的List类型差不多,有序的,可重复的
4.Set集合类型-即Value(member)所存储的类型,类比Java中的HashSet类型
- 相比Java中的类型,可以这样理解 Map<String,HashSet> Key是String类型的,Value是Java中Set类型的。特点也和Java中的Set类型差不多,无序的,不可重复的
5.有序集合类型-即Value(member)所存储的类型,类比Java中的TreeSet类型
-
特点:有序的,不可重复的,即member是不可重复的,使用score维护成员的顺序,score是可以重复的
-
zadd命令如果添加已经存在的member对象,则使用新的score值更新member旧的score值