导航

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建议


切勿当作黑盒使用(很多故障的源头),开发与运维通常重要
阅读源码








posted on 2021-10-09 16:27  molingke  阅读(58)  评论(0编辑  收藏  举报