面试进阶Redis(一)—— Redis基本数据类型
Redis基本数据类型
Redis的整体都是key——value的形式,但是value的数据结构却有所区别,主要有5种基本数据类型【1】:
除此之外,可以通过设定二进制的String类型可以得到Bit arrays类型,当然,Redis提供了bitmap操作的API(对String类型),还有被用于估计一个 set 中元素数量的概率性的数据结构——HyperLogLogs【2】。
Redis命令主要分为两类:set和get,对应到这5种数据结构的操作分别为【3】:
类型 | set | mset | get | mget |
---|---|---|---|---|
String | set K V | mset K1 V1 K2 V2 | get K | get K1 K2 |
List | lpush/rpush K V | lpush/rpush K v1 v2 | lrange K start end | / |
Set | sadd K k | sadd K k1 k2 | smember K k | smembers K |
Zset | zadd K score k | zadd K score1 k1 score k2 | zrange K start end | / |
Hash | Hset K k v | Hmset K k1 v1 k2 v2 | hget K k | Hmget K k1 k2 |
对于List,或者rpop listKey都可以弹出左侧或右侧的元素并返回,可以看到,Redis的List应该是基于双端链表的实现。
对于Set,smember K k用于判断key为K的Set中,值为k的key是否存在,存在返回1,不存在返回0。smembers K用于获取key为K的集合中所有的元素(k)。
一个数据结构,除了set,get外,应该还有delete,由于Redis都是key-value的形式,要删除整个数据,del K即可。但明显现在讨论的是对value的内部元素的删除。
String,直接删——del K
List —— lpop listKey或者rpop listKey,分别从左侧和右侧删除元素,并返回该元素的value
Set —— spop,因为是Set是无序的,所以会随机删除一个key并返回。
Zset —— zpopmax,删除score最大的元素;zpopmin,删除score最小的元素
Hash —— hdel,删除一个或多个元素。
参考资料:
【1】 Redis 数据类型
【2】 Redis 数据类型介绍
【3】 Redis命令