Redis五种数据类型
string
使用类数组的形式存储,存满后翻倍,大小超过1M之后每次加1M,最大为512M。
list
使用类似linkedList方式存储,当数据较少时通过连续的内存存储ziplist,当数据变多时变为quicklist,为多个ziplist连接组成,避免了内存的过度碎片化,同时也兼顾了插入删除效率。
hash
字典相当于hashmap,通过数组加链表存储数据,key的值只能是字符串。rehash的方式与java不同,redis才用了渐进式rehash,在rehash时会保留两个hash,逐步把旧的内容迁移至新的。
set
相当于java中的hashset,是一个唯一的无序集合,可以理解为value为null的hash。可以用来做中奖用户集合。
zset
有序集合,使用跳表实现。每个数据都有value和score,一个代表值一个是排序。
下面四种类型被称为容器型结构有以下两个原则:
1.create if not exists, 比如lpush 如果不存在则新建一个。
2.drop if no elements,如果lpop后没有元素则直接丢弃对象。
过期时间
所有数据类型都可以设置过期时间,不过更新后会消失。