1. redis的存储结构
redis是remote dictionary server(远程字典服务器的缩写),是以字典结构存储数据(或称为映射,关联数组的数据结构),并允许其他应用通过tcp协议读写字典中的内容。redis中支持的键值数据类型:
1>字符串类型
2> 散列类型
3> 列表类型
4> 集合类型
5> 有序集合类型
这种字典形式的存储结构和常见的mysql等关系型数据库的二维表形式的存储结构有很大的区别。
举个例子来说,如果我们在程序中使用了post变量存储了一篇文章的数据(标题,正文,阅读量和标签):
post['title'] = "hello world!"
post['content'] = 'Blablablabla...';
post['views'] = 0
post['tags'] = ["PHP",'Ruby','Node.js']
如果使用MySQL,就会创建两张表,一张表存放的是标题,内容, 访问量等信息,一张表存放的是标签信息,在访问的时候,
将两个表进行连接查询。这样并不是很直观
但是使用redis字典结构的存储方式是的开发者能够将程序中的数据直接映射到redis中,使用redis的另一个优势在于
对于不同的数据类型的访问提供了很便捷的访问方式。
2. 内存存储和持久化
redis数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因而在性能上对比其他基于硬盘存储的数据库,优势很大。
将数据存储在内存中,在程序退出后,内存中的数据回消失,redis提供了对数据的持久化支持,能够将数据异步存放到硬盘,并不会影响服务的支持。
3. 功能丰富
redis虽然是作为数据库开发的,同时也扩展了丰富功能,能够将其作为缓存、队列系统使用。
redis能够为每个键设置生成时间,生存时间到期后,能够自动销毁,这个功能实现了redis作为缓存系统使用的可行性。
,作为缓存系统,redis还能投限制数据占用的最大内存空间,在数据达到空间限制后,可以按照一定的规则自动淘汰不需要的键。
redis的列表类型键可以用来实现队列,并且支持阻塞是读取,可以很容易实现一个高性能的优先级队列。
4. 简单稳定
通过常用的几十个简单命令,就能访问redis