Nosql概述
为什么要用Nosql
现在我们可以通过第三方,对数据进行访问和爬取,如博客信息,书籍信息,视频网站,社交网络,地理位置,用户生成的数据和操作日志等信息,在访问量,并发量相当大的情况下,使用关系型数据库已经不适合这些场景了,Nosql却能很好的处理这些大的数据。
什么是Nosql
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”, 泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
如图所示:我们在使用某个企业的某个应用时,如果没有缓存,当读写量达到十分巨大的数字时,访问效率就会大大降低,更甚者可能会引起数据库的崩溃,此时,上边介绍到的Nosql可以很好的完成这种场景带来的弊端。
Nosql特点
解耦! 1.方便扩展(数据之间没有关系,很好扩展) 2.大数据量,高性能(redis一秒写8万次,读取11万,Nosql的缓存记录是一种细粒度的缓存,性能比较高) 3.数据类型多样(不需要像关系型数据库一样提前设计,随取随用。例如redis可以存储string,list,set,Zset,hash)
小结
当前我们处于的大数据时代,数据量会越来越庞大,数据类型更加多样化,对数据进行实时化管理的需求也越来越多,随之对程序的要求也越来越高,高并发,高可扩,高性能越来越受到重视,个人在工作实践中认为,Nosql+RDBMS(数据库) 结合使用,会更加理想。
接下来,小编主要为大家介绍自己在工作中常用的Nosql--redis
Redis入门
redis是什么?
官网:redis.io/
中文网:www.redis.cn/
百度百科介绍:
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现了master-slave(主从)同步。
免费和开源!当下最热门的Nosql技术之一!
redis能干嘛?
1.内存存储、持久化,内存中断电或者宕机会导致数据丢失,所以持久化很重要(rdb、aof) 2.效率高,可以用于高速缓存 3.发布订阅系统(简单的消息队列) 4.地图信息分析 5.计时器,计数器(如:浏览量) ....
特性
1.数据类型多样 2.持久化 3.集群 4.事务 ......
安装与使用
macOS上Redis的安装与测试
参考网址:blog.csdn.net/realize_dre…
windows上Redis的安装与测试
参考网址:github.com/dmajkic/red… (停更很久了)
注意:Redis推荐我们使用Linux去开发和使用
Linux上Redis的安装与测试
参考网址:redis.io/
1.下载安装包
2.解压,移动到opt目录下
3.进入到解压后的redis文件中
4.基本的环境安装
yum install gcc-c++
5.执行make命令,会安装一些默认的环境
6.redis的默认安装路径 /usr/local/bin
7.将redis配置文件复制到当前目录下
8.redis不是默认后台启动的,修改配置文件!(默认no 改为yes)
9.启动redis服务,回到bin目录,执行命令
reids-server /配置文件所在目录/redis.config redis-cli -p 6379 ping
返回pong,表示连接成功!
10.关闭redis服务:
shutdown exit
然后通过ps -ef | grep redis命令查看进程信息
测试性能
redis-benchmark是redis自带的压力测试工具
redis-benchmark 命令参数
简单测试性能
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
如图大家可以看到10万次请求0.81秒就完成了
基础知识
1.redis默认有16个库
2.默认使用的是第0个(使用select进行切换:select 3)
3.redis是很快的,是单线程的,基于内存操作,CPU不是redis性能的瓶颈,redis的瓶颈是根据机器的内存和网络带宽。
redis为什么单线程还这么快?
1.误区:高性能的服务不一定是多线程的
2.误区二:多线程一定比单线程效率高
核心:redis是将所有的数据全部放在内存中的,所以使用单线程操作效率是最高的
redis的数据类型
string、list、set、zset、hash
事务
redis的事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行---一次性,顺序性,排他性
redis单条命令保证原子性,但是事务不保证原子性
redis事务没有隔离级别的概念
今天的分享就到这里啦,希望小编的笔记能够给您带来帮助!!!