9.1 Redis概述
Redis起源
一种基于键值对的NoSQL数据库。
Redis值可以是由字符串,哈希,列表,集合,有序集合,位图,HyperLogLog,GEO等多种数据结构和算法组成,可以满足很多场景
Redis将数据存放在内存中,读写性能非常惊人。
Redis可以将内存的数据利用快照和日志的形式保存硬盘,保证内存中的数据不会“丢失”。
2008年,redis的作者在开发一个网站的时候,需要一个高性能的队列功能,MySQL无法满足,最终自己开发。
当前,Twitter,github,新浪微博,阿里巴巴,腾讯,百度,搜狐,优酷,美团小米,唯品会等都在使用Redis。
什么是图形数据库?
顾名思义,Graph database 就是用来存储图结构的数据库咯,和存储图片没有任何关系。上面也说过,没有图数据库,一般的关系型数据库也一样能存储图结构。但图数据库更适合用来解决复杂的关系问题的。
以下是百度百科上的摘抄:
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。
图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。
最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷
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真正的分布式实现,提供了高可用,读写和容量的扩展性。
Redis使用场景
可以做:
缓存 、排行榜系统 、计数器应用 、社交网络 、消息队列系统
不可以做:
大数据VS小数据
大数据:硬件投入无底洞
小数据:适合内存
热数据和冷数据
热数据:频繁读写
冷数据:不经常修改
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律