redis之(三)redis的数据类型
[一]字符串类型(基本数据类型)
--->字符串类型是redis的最基本的数据类型
--->能存储任何形式的字符串,(用户邮箱,json化的对象,一张图片)
--->一个字符串类型的键允许存储的数据的最大容量是512MB
--->赋值:set key value
--->取值:get key
[二]散列类型(对象结构)
--->一个散列类型的数据,如java里一个对象的实例
--->key就是一个对象的名字
--->key里的字段,如javabean里的属性名
--->key里的字段值,如javabean里的属性的属性值
--->key的结构不固定,可以随意的扩展字段,和减少字段。多个类似的key可以不用关心批次的结构是否一致
--->一个key可以存在字段数量:2的32次方-1个
--->除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套,比如集合类型的每个元素都只能是字符串,不能是另一个集合或散列表等
[三]列表类型(list结构)
--->列表类型可以存储一个有序的字符串列表。
--->元素不唯一
--->常用的操作是,向列表的两端添加元素,或者是获取列表的某一个片段
--->列表类型内部是使用双向链表实现的。向列表两端添加元素的时间复杂度为0,获取越接近两端的数据,速度越快。
--->常常把列表做队列使用。
--->可以存放的元素个数为:2的32次方-1个
[四]集合类型(set结构)
--->集合中每个元素都是不同的,且没有顺序的。
--->元素唯一
--->一个set型的集合键至多存储2的32次方-1个元素
--->由于集合类型在redis内部是使用值为空的散列表(hash table)实现的。所以这些操作的时间复杂度为0
--->最方便的是多个集合类型键之间还可以进行并集,交集,差集的运算。
[五]有序集合类型
--->有序集合类型和集合的区别在于有序
--->有序集合会为每个元素都关联一个分数。因此:获取分数最高,最低的前n个元素。
--->有序集合中的每个元素是不同的,但他们各自的分数可能是相同的
--->有序集合在某些方面和列表类型有些相似(1)二者都是有序的(2)二者都可获得一定范围的元素
--->有序集合和列表的区别
(1)列表类型是通过链表实现的,获取两端数据的时间复杂度为0。
(2)有序集合类型是使用散列表和跳跃表实现的。即使读取中间部分的数据,时间的复杂度为0
(3)列表中不能简单调整某个元素的位置,但是有序集合可以。
(4)有序集合要比列表类型更耗费内存