Redis使用总结-Redis中的数据类型
String
- String是Redis基本数据类型,一个key对应一个String
- String 类型是二进制安全的。意思是 redis 的 string 任意格式的二进制数据。比如jpg图片或者序列化的对象
- String 类型的值最大能存储 512M
使用场景
- 热点数据缓存
- 利用redis的INCR、DECR等指令来实现原子计数的效果,用来实现业务上的统计计数需求。
- 分布式sessionkey系统。 redis可以很方便的设置sessionkey的自动过期时间,分布式系统的各个node可以统一的进行session的管理。
- 分布式锁。使用SETNX命令当不存在才添加,可以很好的来实现分布式锁。
Hash
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。通过命名很清楚的之后Hash这种数据类型时使用了哈希表作为底层实现,关于什么是哈希,什么是哈希表可以自行百度,后续有时间可以单独开一篇来详细分析Redis hash的实现。
使用场景
适合存储对象的场景
List
Redis List是简单的字符串列表,数据结构是双向链表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也就是兼有栈和队列的特性。因为是链表,所以查找的复杂度就是O(n)了,但是考虑到常用的指令都是在列头和列尾操作,所以这种数据结构才是最适合的。
使用场景
作为消息队列
Set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
使用场景
- 需要去重情景下的列表,也可以利用命令Sismember 判断member是否在集合中。
- 需要对多个集合进行交集,差集,并集操作的时候,比如可以求出共同关注,共同喜爱之类的功能。
ZSet
Redis sorted set和Set一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
使用场景
- 排行榜
- 有序不重复的集合
- 可以将权重作为score来进行存储,按照权重来进行排序或者优先操作