二十三 NoSql&Redis及其安装
什么是Nosql
not only sql , 不仅仅是sql,是一项全新的数据库理念,泛指非关系型的数据库。
为什么需要NoSql
解决以下问题:
1 High Performance 对数据库高并发读写的要求
例如电商的秒杀,一瞬间很多人访问仓库。投票计数等等
2 Huge Storage 对海量数据的高效率存储和访问的需求
例如QQ,推特等等,几亿用户,产生的信息量关系型数据库很难应付。
3 High Scalability && High Availability 对数据库的高可拓展性和高可用性的需求
基于web的架构中,数据库是最难进行横向扩展的。当一个应用系统的用户量和访问量与日俱增的时候
你的数据库却没法像WebServer和app Server 那样简单的通过添加更多的硬件和服务结点来扩展性能和负载能力。
NoSql数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其大数据应用难题
主要的数据放在关系型数据库里面,性能提升的数据放在Redis里面
NoSQL数据库的四大分类:
键值对存储数据库:
- 产品:Redis、Tokyo Cabiner、Voldemort
- 典型应用:内容缓存,主要用于处理大量数据的高访问负载
- 数据模型:一系列键值对
- 优势:快速查询
- 劣势:存储的数据缺少结构化
列存储数据库:
- 产品:HBASE
- 典型应用:分布式的文件系统
- 数据模型:以列簇式存储,将同一列数据存在一起
- 优势:查找速度快,可拓展性强,更容易进行分布式扩展
- 劣势:功能相对局限
文档型数据库:
- 相关产品:MogoDB
- 典型应用:web应用(与Key-Value类似,Value是结构化的)
- 数据模型:一系列键值对
- 优势:数据结构要求不严格
- 劣势:查询性能不高,缺乏统一的查询语法
图形数据库:
产品:InfoGrid
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案
NoSQL主流:Redis
Redis:用C语言开发的一个直接操作内存的开源的高性能键值对数据库,它提供多种数据类型来适应不同场景下的存储需求
目前为止Redis支持的键值数据类型如下:
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
官方测试数据:50个并发执行100000,读的速度是110000次/秒,写的速度是81000次/s.
Redis应用场景:
- 缓存(数据查询,短连接,新闻内容,商品内容等等)
- 聊天室的在线好友列表
- 任务队列(秒杀,抢购,12306等等)
- 应用排行榜
- 网站访问统计
- 数据过期处理(可以精确到毫秒)
- 分布式集群架构中的session分离
Redis的安装:
Redis的安装包:源码形式提供,.c文件
将.c编译为.o文件 需要安装gcc依赖
将编译后的文件安装在Linux上
等价于 希望在当前系统上安装一个java版本的QQ,而下载到的安装文件是以.java这样的源码形式提供
需要:
下载Gcc :在系统上有JDK(gcc)
编译:通过JDK将源码编译为字节码
安装:编译依赖gcc环境,需要安装gcc
Redis的启动:
1前端模式启动:不推荐
只接短信bin/redis-server,缺点是启动完成后不能进行其他操作,除非用Ctrl+C结束程序,不推荐使用
2 后端启动
redis-cli连上redis服务后,可以在命令行发送命令
ping:测试客户端与Redis的连接是否正常,如果连接正常会受到回复PONG
set/get : 向Redis设置数据、获取数据 set name mary get name
del:删除指定key的内容 del key1
二十三 NoSql&Redis及其安装的更多相关文章
- Redis集群(二):Redis的安装
官方网站:http://redis.io/ 本系列撒使用的版本是:3.0.0 一.安装必要包 yum -yinstall gcc 二.linux下安装及使用(wget下载到当前目录) redis-3. ...
- redis(二十三):Redis 集群(proxy 型)二
redis的确是一个非常高效的缓存服务器,但是单台redis服务器的内存管理能力有限,如果一味的加大内存的话会导致redis服务器的性能下降,所以就必须要搭建redis集群来提供服务.在redis官方 ...
- [nosql之redis]yum安装redis
1.首先对于这种nosql来说目前我用到的功能很少,所以感觉没有必要去优化他跟不需要去编译安装.今天来介绍下一个yum安装redis 步骤1:安装扩展yum库 [root@localhost ~]# ...
- (转)NoSQL——Redis在win7下安装配置的学习一
NoSQL——Redis在win7下安装配置的学习一 有些也是从网上看来的 1.下载安装 Redis它没有windows的官方版本,但是又非官方的版本,到官网上去下载相应的版本,我的电脑是win7 ...
- Redis学习——Windows环境下Redis的安装(二)
一.说明 之前介绍了Linux环境下Redis的安装,这次介绍一下Windows环境下Redis的安装,首先要讲的是,Redis官方只支持Linux,还好 Microsoft Open Tech gr ...
- Linux服务器运行环境搭建(二)——Redis数据库安装
官网地址:http://redis.io/ 官网下载地址:http://redis.io/download 1. 下载Redis源码(tar.gz),并上传到Linux 2. 解压缩包:tar zxv ...
- Linux下Redis的安装和部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Linux下Redis的安装与配置
redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它支持存储的value类型相对更多,包括stri ...
- redis&rabbitMQ安装
前言: 学习python已经有一段时间了,最近在学twisted(博客:twisted安装),redis,rabbitMQ感觉有点难度,所以还是写下博客整理下. 一.Redis的安装 redis是一种 ...
随机推荐
- Pako.js压缩解压,vue压缩解压,前后端之间高效数据传输
项目开发中常常会遇到前后端之间有大量数据传输占用带宽导致页面响应慢的问题,这时候我们可以考虑使用Pako.js对信息进行压缩之后传输. 我在前端使用的是vue-element-admin前端框架.框架 ...
- Update(Stage5):Kudu入门_项目介绍_ CDH搭建
Kudu 导读 什么是 Kudu 操作 Kudu 如何设计 Kudu 的表 Table of Contents 1. 什么是 Kudu 1.1. Kudu 的应用场景 1.2. Kudu 和其它存储工 ...
- mcast_block_source函数
#include <errno.h> #include <sys/socket.h> #define SA struct sockaddr int mcast_block_so ...
- win10 安装"pip install orange3" 出现LINK : fatal error LNK1158: cannot run 'rc.exe' 错误的解决办法
解决办法: 从(本例使用的是64位的python3.6 注意:如果python的版本是32位,则使用x86:如果是64位,则使用x64;) 复制一下两个文件 rc.exe rcdll.dll 到
- python 之并发编程更新版进程池与进程池比较与回调函数
一.更新版进程池与进程池比较 from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor import os, tim ...
- 原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度
JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...
- matlab学习 — 实现简单的爬虫
这里复杂的情况暂时不考虑..测试网址为pixiv的每日排行榜 = = url = 'https://www.pixiv.net/ranking.php?mode=daily' text = webre ...
- Centos7 nginx的负载均衡概念与配置
一.负载均衡概念 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单 ...
- redis 初识与安装
一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持pus ...
- 【Java】变量命名规范
Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包.类.变量等的命名规范. (一)Package(包)的命名 P ...