Redis是把整个数据库全加载到内存当中进行操作,通过异步操作定期把数据库中数据flush到硬盘中保存,因为是纯内存操作,所以Redis的性能非常出色,每秒处理10万次以上的读写操作,是目前性能最快的key->value数据库
Redis支持的数据类型包括 String,Set,Sorted Set,List,Hash
一.String
String类型是二进制安全的,可以把图片和视频文件保存到String
struct sdshdr{
char buf[]; //字符串实体,保存字符串的内容
long len; //记录数组buf大小
long free; //记录数据buf还有多少可用空间
}
为了提高网站的运行速度,可以使用String类型缓存一些静态文件,如图片文件,css文件
二.List
List数据类型指key对应的value是一个双向链表结构,所以List类型支持链表支持的所有操作,List类型在互联网上十分有用,例如存放微博中的“我关注的列表”,或者论坛中的回帖ID
使用List还可以实现消息队列功能,减轻数据库的压力,消息队列类似现实生活中的队列,每次有消息就把消息放进队列尾部,然后使用lpop命令把消息从队列头部取出
三.Set
Set类型通常用于记录做过的事情,例如在某些投票系统中,每个用户一天中能投票一次,那么可以使用Set来记录某个用户的投票情况,只需要以日期作为Set的key,则将用户的ID作为member即可。要查看用户今天是否投过票,只需要以今天的日期为key去查询用户ID是否存在
四.Sorted set
Sorted set类型和set类型相似,都是String类型元素的集合,不同的是Sorted set属于有序集合,通过一个double类型的整数score进行排序。Sorted set通过skipList(跳跃表)和Hash组合完成。skipList负责排序,Hash负责保存数据。
因为Sorted set是排序的set,所以Set能做的是事情Sorted set也能做,也可以做其他的事情,例如使用Sorted set构建一个具有优先级的队列。
Sorted set类型在web中非常有用,如果排行榜中按照顶贴次数排序,方式是排序的数值设置成Sorted set中的score
五.Hash
Hash类型是每个key对应一个哈希表,添加,删除和修改操作的时间复杂度都是O(1),Hash类型适合存储对象,例如用户信息对象,把用户ID设置为key,把数据信息保存到Hash类型中