redis数据类型
- string(字符串类型),string是redis的最基本的类型,一个key对应一个value。是二进制安全的,意思是redis的string可以包含任何数据(比如jpg图片或者序列化对象)。
- hash类型: 是一个string类型的field和value的映射表,hash特别适合用于存储对象
- list类型:Redis列表是简单的字符串列表,按照插入顺序排序。可以选择头插或者尾插。
set类型:string类型的无序集合,集合中成员是唯一的。另外redis中集合是通过hash table实现的,所以增加、删除、查找的时间复杂度都是O(1).
redis的set是string类型的无序集合(不能存放对象),集合成员是唯一的,这就意味着集合中不能出现重复的数据。
redis中的集合通过hash表实现的,所以添加删除,查找的复杂度都是O(1).
通过smembers查看集合项时,是通过字典序输出的。sorted set类型:和无序集合类似不允许有重复的成员,不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但是分数却可以重复。
作为一个集合,自然可以进行交并的操作。在做交运算的时候会把两个相同member的score值相加放入c中;并运算的时候两个集合中不同项score值不变,相同元素score值相加。
在redis聚合(交\并运算)的时候,有几个参数(sum, min, max)默认的是sum
有序集合算法复杂度:- 增删:O(M*log(N)), N 为有序集的基数, M 为被成功操作(新增、移除)的成员的数量。
- 查询:O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数。
- 聚合:O(N)+O(M log(M)), N 为给定有序集基数的总和, M 为结果集的基数。
- 总数:O(1)