文章目录
五种基本数据类型
Redis支持五种基本数据类型:String,Hash,List,Set,Zset / Sorted Set
首先,读者需要明白,Redis的数据类型是根据 Value来划分的,Key默认全都是String类型。所以以下的文章全都是针对Redis Key Value对中的Value进行讨论的。
-
String: redis最基本的类型,与高级程序设计语言中的String大同小异。
redis 127.0.0.1:6379> SET key "哈哈哈" OK redis 127.0.0.1:6379> GET key "哈哈哈"
-
Hash:一个键值对集合,类似Java中的HashMap,每一个Key 对应的 Value就是一个Map,Hash特别适合用于存储对象
redis 127.0.0.1:6379> DEL key redis 127.0.0.1:6379> HMSET key field1 "Hello" field2 "World" "OK" redis 127.0.0.1:6379> HGET key field1 "Hello" redis 127.0.0.1:6379> HGET key field2 "World"
-
List:一个简单的字符串列表,也就是说List中的每一个元素都是String类型(此处的String并不单单可以表示字符串,对象通过序列化的方式也可以转变成字符串,常见的像JSON序列化,Redis原生的序列化),类似于Java的LinkedList,并按照插入顺序排序,你可以添加一个元素到列表的头部或者尾部
redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> lpush runoob redis (integer) 1 redis 127.0.0.1:6379> lpush runoob mongodb (integer) 2 redis 127.0.0.1:6379> lpush runoob rabbitmq (integer) 3 redis 127.0.0.1:6379> lrange runoob 0 10 1) "rabbitmq" 2) "mongodb" 3) "redis"
-
Set:Redis的Set是String类型的无序集合,类似Java的HashSet,也就是Set中的每一个元素也是String类型的,他的特点是添加、删除、查找的复杂度都是O(1)
redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> sadd runoob redis (integer) 1 redis 127.0.0.1:6379> sadd runoob mongodb (integer) 1 redis 127.0.0.1:6379> sadd runoob rabbitmq (integer) 1 redis 127.0.0.1:6379> sadd runoob rabbitmq (integer) 0 redis 127.0.0.1:6379> smembers runoob 1) "redis" 2) "rabbitmq" 3) "mongodb"
-
ZSet:有序集合,类似于Java中的TreeMap,但是底层并不是用红黑树实现的,会根据score排序,并且支持范围查询,socre是一个double类型,member是一个String类型(注意,理论上member可以放任意数据,但是一般生产上仅用来存类似id这种数据,如果存一整个对象的话,有可能发生BigKey问题)
- 添加元素到有序集合中
zadd key score member
-
与TreeMap不同的地方在于ZSet不仅可以 用 score 找对应的 member,也可以用 member 找相应的 value
-
redis 127.0.0.1:6379> DEL runoob redis 127.0.0.1:6379> zadd runoob 0 redis (integer) 1 redis 127.0.0.1:6379> zadd runoob 0 mongodb (integer) 1 redis 127.0.0.1:6379><