一、速度快。
这主要时因为这些数据都时存在雨内存中的。另外当你打开Redis的源码时,你会发现Redis都是用C语言写的,C语言时最接近计算级语言的,且只有五万行代码,从而保证了Redis的速度。同时,因为Redis是单线程的,因为单线程在内存中是效率最高的。
二、持久化。
Redis的持久化可以保证将内存中的数据每隔一段时间就保存在磁盘中,重启的时候会重新加载到内存中。齿芥花方式是RDB和AOF。(RDB和AOF区别在最后)
三、支持多种数据结构
Redis支持哈希、集合、BitMaps、还有位图(用于活跃用户数统计等)、HyperLogLog(超小内存唯一值计数)、GEO(地理信息定位)。
四、支持多种编程语言
支持Java、PHP、Python、Ruby、Lua、Nodejs。
五、功能丰富
如发布订阅、Lua脚本、事物、Pipeline(管道,即当指令到达一定数量后,客户端才会执行)。
六、简单
不依赖外部库、单线程、只有23000行的Code。
七、主从复制
主节点的数据做副本、这事做高可用的基石。
八、高可用和分布式
Redis-Sentinel(v2.8)支持高可用、Redis-Cluster(v3.0)支持分布式。
Redis的使用场景:
Redis最大的作用是增加访问性能的问题,他可以解决很多关系型数据库无法解决的问题。
1、缓存系统
这是Redis使用最多的应用场景。Redis能提到Memcached,让你的缓存从只能存储数据变得能够更新数据、因此你不再需要每次都重新生成数据。
2、计数器
如转发数、评论数、有了原子递增,你可以放心的加上各种计数。
3、消息队列系统
虽然Kafka更强,但是简单的可以使用Redis。运行稳定且快速、支持模式匹配,能够实时订阅和取消。Redis还有阻塞队列的命令,可以让一个程序在执行时被另一个程序添加到队列。
4、排行榜及相关问题
其实就是一种有序集合。对于Redis来说,你要在几百万个用户中找到排名,其他的数据库的查询速度时非常慢的,但是Redis可以轻松解决。
5、实时系统
使用位图来做布隆过滤器,例如实现垃圾邮件过滤系统的开发变得非常容易。
RDB和AOF两种持久化的区别
RDB:原理是将Redis在内存中的数据库记录定时dump到磁盘的RDB持久化。
AOF:原理是将Redis的操作日志以追加的方式写入文件。
RDB持久化是值在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF持久化是以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
本章内容就写到这,希望能对你有帮助。