redis概述
一、概述
1.一种基于键值对的NoSQL数据库
Redis值可以是由字符串、哈希、列表、集合、有序集合、位图、HyperLog,GEO等多种数据结构和算法组成,可以满足很多场景。
Redis将数据库存放在内存中,读写性能非常惊人。
Redis可以将内存的数据利用快照和在日志的形式保存硬盘,保证内存中的数据不会“丢失”
2008年Redis的作者在开发一个网站的时候,需要一个高性能的队列功能,MYSQL无法满足,最终自己开发,当前TWitter,GitHub,新浪微博、阿里巴巴、腾讯、百度、优酷、搜狐、美团小米、唯品会等
2.什么是图形数据库?
顾名思义,Graph database 就是用来存储图结构的数据库咯,和存储图片没有任何关系。上面也说过,没有图数据库,一般的关系型数据库也一样能存储图结构。但图数据库更适合用来解决复杂的关系问题的。
以下是百度百科上的摘抄:
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。 图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。 最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷
3.Redis特性
速度快,读写能行10万/秒 1.主要原因:放在内存中 2.C语言实现 3.单线程架构,预防多线程可能出现的竞争问题 4.作者对源代码精心打磨,集性能和优雅于一身的开源代码
基于键值对的数据结构服务器 1.Redis全程是REmote Dictionary Server 2.主要提供了五种数据结构:字符串,哈希,列表,集合,有序集合
丰富的功能 1.提供键过期功能,可以用来实现缓存 2.提供发布订阅功能,可以用来实现消息系统 3.支持Lua脚本功能,可以利用Lua创造出新的Redis命令 4.提供简单的事务功能,能在一定程度上保证事务特性 5.提供了流水线(Pipeline)功能,这样客户端可以将一批命令一次性传到Redis,减少了网络的开销
简单稳定 1.源码很少,代码5w行 2.单线程模型(不仅服务端处理模型简单,而且客户端开发也很简单) 3.不需要以来操作系统中的类库,自己实现了事件处理的相关功能 4.很稳定,不会随便宕机
客户端语言多 主流开发语言都支持
持久化 1.RDB持久化是把当前进程数据生成快照保存到硬盘的过程,出发RDB持久过程分为手动触发和自动触发 2.AOF持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。(主要解决数据持久化的实时性,也是持久化主流方式)
主从复制 Redis提供了复制功能
高可用和分布式 从2.8版本提供了高可用实现Redis Sentinel,它能够保证Redis节点的故障发现和故障自动转移 从3.0版本正式提供了分布式实现Redis Cluster,是Redis真正的分布式实现,提供了高可用,读写和容量的扩展性。
4.Redis使用场景
可以做:排行榜系统
计数器应用
社交网络
消息队列系统
不可以做:大数据VS小数据
大数据:硬件投入无底洞
小数据:适合内存
热数据和冷数据
热数据:频繁读写
冷数据:不经常修改
5.用好redis建议
切勿当作黑盒使用(很多故障的源头),开发与运维通常重要 阅读源码