Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
在传统时代,我们的数据都是直接从数据库读取的,那是因为并发量很小,如今,单机的读取已经无法满足我们的性能要求,而Redis的数据是存在内存里面的,操作内存远比操作磁盘性能高得多,因此,我们才需要Redis。
最常见也是最基本的数据类型,一个键对应一个值,String可以包含任何数据,包含图片(二进制)或者序列化的对象,长度最多为512M。
hash是一个由多个键值对组成的数据类型,因此Hash更适合去存储对象,Redis 中每个 hash 可以存储 2的32次方 - 1 个键值对(40多亿)。
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
Set 是 String 类型的无序集合,不允许重复数据,Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1),集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
HyperLogLog是用来做基数统计的算法,优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增
Bitmap实际上就是String类型,通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。
一个bit的值,或者是0,或者是1。redis 字符串最大值为512M,所以bigmap最大值为:4294967295