Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。Redis内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。
一.五大基本类型
1.String 字符串
具有计数功能和存储字符串功能,可用于计数器、统计数量、对象缓存存储。
2.Lists 列表
1)功能类似是个链表,左右插入均可。两头插入快,中间插入满
2)key不存在,创建新链表;存在,新增内容;移除所有元素,list消失
3)消息队列(lpush+rpop先加先出),栈(lpush+lpop先加后出)
3.Set 集合
1)元素唯一,不重复
2)srandmember 随机抽取操作,srem移除指定元素,spop随机删除,smove移动指定元素到新集合
2)sdiff(差集)、sinter(交集)、sunion(并集)操作 可 实现共同好友、共同关注
4.Hash 哈希
适合存储对象
5.zSet 有序集合
1)zrangebyscore(排序小-大)、zrevrange(排序大-小)、zrangebyscore withscores(查询所有值包含key)操作
2)可用于排序等。
二.三大特殊数据类型
1.Geospatial 地理位置
可用于计算距离、位置。与地理位置相关的逻辑可以考虑使用。
2.Hyperloglog 基数
1)基数:集合中不同元素的数量。hyperloglog算法会有一定的误差性。
2)优点:占用的内存是固定的,2^64个元素(12Kb)。占用内存小、效率高。
3)如果允许一定误差,可以用此方法统计。例如网站的访问量
3.Bitmap 位存储
1)Bitmap位图,二进制操作记录,只有0、1两个状态
2)setbit(添加)、getset(获取)、bitcount(统计)操作。可用于统计登录次数等。