redis 的5种数据结构
String (字符串)
Hash (字典)
List (列表)
Set (集合)
Sorted Set (有序集合)
String (字符串)使用场景
- LEN niushuai:O(1)获取字符串长度
- APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍)
- 设置和获取字符串的某一段内容
- 设置及获取字符串的某一位(bit)
- 批量设置一系列字符串的内容
- 原子计数器
- GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用
Hash (字典)使用场景
存储、读取、修改对象属性
List (列表)使用场景
- 最新消息排行(如新浪微博的 TimeLine等)
- 消息队列
Set (集合)使用场景
- 共同好友、二度好友
- 利用唯一性,可以统计访问网站的所有独立 IP
- 好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐
Sorted Set (有序集合)使用场景
- 带有权重的元素,比如一个游戏的用户得分排行榜
- 比较复杂的数据结构,一般用到的场景不算太多
其他场景
- 订阅-发布系统
- 事务Transactions