NoSQL - Redis概述及其数据类型

什么是NoSQL

NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。

 

NoSQL解决什么问题

web程序不再仅仅专注在功能上,同时也在追求性能

1.High performance:对数据库高并发读写的需求 
现在数据库并发负载非常高,往往要达到每秒上万次读写请求
关系数据库应付上万次SQL查询勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了

2.Huge Storage:对海量数据高效率存储和访问的需求 
对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的

3.High Scalability && High Availability: 对数据库的高可扩展性高可用性的需求 
对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

主流的NoSQL有哪些?

1.键值(Key-Value)存储数据库 - Redis

它主要使用内存,有两种持久化方案,速度非常快,一般做分布式缓存使用。

2.文档型数据库 - MongoDB

它主要使用硬盘存储, 所以不会担心数据丢失, 速度介于redis和传统数据库之间。

它更擅长存储大文本数据, 以及一些非结构化数据, 它比Redis的数据类型更加丰富。

例如: 存储小说网站的小说,存储电商网站的评论等这些数据。

Redis概述

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库
官方提供测试数据中,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s。

 

Reids的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)、聊天室的在线好友列表任务队列(秒杀、抢购、12306等等)、应用排行榜、网站访问统计、数据过期处理(可以精确到毫秒)、分布式集群架构中的session分离

 

业务流程

获取数据的时候先从redis中获取, 如果获取到数据则直接返回, 就不用访问数据库了
如果获取不到数据, 可以从数据库中查询, 查询到后放入redis中一份, 下次就可以直接从redis中查询到,这样大大降低了数据库的高并发访问压力。

 

持久化方案

1.RDB(默认) 分时持久化
 可以在配置文件中设定, 多长时间持久化一次, 持久化次数少也就是操作硬盘的次数少,
速度快. 但是如果在没有完成持久化前, 如果服务器断电, 则内存中没有持久化的数据会丢失.
2.AOF 实时持久化
每次向redis中做增删改操作, 都会将数据持久化到硬盘上, 数据可靠性高, 不会丢失,但是速度慢

Redis的数据类型

它是一种高级的Key-Value的存储系统,其中Value支持5种数据类型。

5种数据类型:字符串(String)、哈希(Hash)、字符串列表(List)、字符串集合(Set)、序字符串集合(sorted set)

Key的定义需要注意:

1.Key不要定义过长,最好不要超过1024字节,这会消耗内存且会降低查询效率

2.Key不要太短,会降低可读性

3.项目中,建议Key最好有一个统一的命名规范

发布了59 篇原创文章 · 获赞 13 · 访问量 2532

猜你喜欢

转载自blog.csdn.net/qq_40885085/article/details/102787539