看优快云博客时看到关于Redis的文章,随手做了笔记记下来,现在发布在此,如有抄袭请告知立马删除。笔记是看了好几篇随手记的,所以没有附录链接,望体谅。
Redis:
1、Redis是高性能的key-value数据库。
Redis支持数据的持久化、Redis提供String、list、set,hash、zset的存储、Redis支持数据的备份。
2、Redis应用场景
1、配合关系型数据库做告诉缓存
2、可以持久化特定数据
3、实现缓存中间件、消息队列
4、计数器相关问题
5、队列
3、Redis优势
1、性能高:数据存储在内存上,数据读写速度快
2、数据类型丰富:有string、list、set、hash、zset
3、原子性:Redis所有的操作都是原子性,多个操作也支持事物
4、丰富的特性:Redis支持发布订阅模式,按key设置过期时间。
4、Redis与Memcached区别
1、数据类型与操作:Redis的数据类型更多,Redis的单个value最大限制是1GB,而Memcached的最大限制是1MB
2、内存使用率:如果采用k/v的形式存储,Memcached内存使用率更高,如果用hash存储,redis内存利用率更高。
3、数据持久化:Redis支持数据文件持久化,Memcached不支持。
5、Redis的数据持久化机制
提供了两种数据持久化机制:RDB()和AOF()
RDB:能够在指定的时间间隔对数据进行快照存储。
AOF :记录每次对服务器的写操作,当服务器重启时会重新执行这些命令来恢复原始数据。
6、Redis常见性能问题和解决方案
Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件。
1、Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能 影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。
2、Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
3、Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。s
如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次。
为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内。
尽量避免在压力很大的主库上增加从库 。
主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3… ,这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。