String----------字符串
Hash------------字典
List-------------列表
Set--------------集合
Sorted Set------有序集合
使用场景也最好说明下
String 使用场景
1.LEN:O(1)获取字符串长度
2.APPEND :往字符串 append 内容,而且采用智能分配内存(每次2倍)
3.设置和获取字符串的某一段内容
4.设置及获取字符串的某一位(bit)
5.批量设置一系列字符串的内容
6.原子计数器
7.GET SET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用
Hash——字典(哈希)
Hash是一个键值对集合,是一个String类型的key与value的映射表,特别适合用于存储对象。
使用场景:存储、读取、修改用户属性
List——列表
使用场景:微博 TimeLine、消息队列
Set——集合
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
使用场景:1.共同好友、二度好友 2.利用唯一性,可以统计访问网站的所有独立 IP 3.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐
Sorted Set——有序集合
使用场景:1.带有权重的元素,比如一个游戏的用户得分排行榜 2.比较复杂的数据结构,一般用到的场景不算太多
3、
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
4、
(1) memcached所有的值均是简单的字符串,redis作为其替代者, 支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据
5、
数据类型
Redis支持的数据类型要丰富得多,Redis不仅仅支持简单的k/v类型的数据,同时还提供String,List,Set,Hash,Sorted Set,pub/sub,Transactions数据结构的存储。其中Set是HashMap实现的,value永远为null而已
memcache支持简单数据类型,需要客户端自己处理复杂对象