redis01_介绍与安装_NoSqlRedis(redis不需要考虑windows上面的支持,只需要考虑Linux)Linux的默认安装目录usr/local/bin

Posted 平凡加班狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis01_介绍与安装_NoSqlRedis(redis不需要考虑windows上面的支持,只需要考虑Linux)Linux的默认安装目录usr/local/bin相关的知识,希望对你有一定的参考价值。

redis的介绍与安装

前言

redis是什么?
redis是用来做缓存的
为什么要用redis?
做缓存的目的是为了提高读取速度

1.1什么是NoSql

为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。

NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充
【附】关系型数据库有mysql、oracle,,关系型数据库有主外键关系,有实实在在的表结构
非关系型数据库,最简单来说就是它没有主外键的关系
非关系型数据库是关系型数据库的一个良好补充
注意NoSQL不是说没有sql而是不仅仅是sql,非关系型数据库,也是数据库

1.2Nosql数据库分类

键值(Key-Value)存储数据库(我们主要研究这种类型,redis就是这种类型的)

相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化

【注意】什么是 内容缓存,主要用于处理大量数据的高访问负载?
比如京东、淘宝等官网,一定是高并发的,因为同时可能有好几千万甚至上亿的访问量

列存储数据库

相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限

文档型数据库

相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法

图形(Graph)数据库

相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

1.3什么是NoSql


注意:redis也是支持持久化的,持久化的意思就是把数据从内存中放到硬盘中的过程,这个过程就叫持久化
主从复制:意思就是主机和从机,从主机怎么复制到从机,因为主redis和从redis之间其实是有一些信息是共享的,可以进行主从复制


Web1.0时代,那时候还没有手机的参与,用户数据量不大
Web2.0时代,我们称之为自媒体时代,新浪微博迅速崛起,移动互联网的加入、各种直播平台的兴起

压力大了我们可以搭集群,但是出现了一个问题,session存在哪呢?


mysql一张表最大的存储量是500-1000万条数据,如果操作这个数据量就需要做数据优化
数据优化包括水平切分、垂直切分、读写分离

水平切分:多张表存储那一张表的数据
垂直切分:分库存储数据
读写分离:复制多张表,一些表只负责读,一些表就只负责写,这样来减轻数据库压力
这些都是破坏了一定的业务逻辑性来换取性能
为什么说他破坏了业务逻辑性
比如说以前我们查询一张表的数据只要select * from 表名
现在我们还需要关注分表,比如按年份分的表,我们查询的时候还要加查询条件,最后再把他们合在一起

在这里插入图片描述


什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下

字符串类型
散列类型
列表类型
集合类型
有序集合类型


1.4redis历史发展

2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。
Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。
VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。

1.5redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。 (最多使用):因为如果每次去数据库查会比较慢
分布式集群架构中的session分离———这个前面的nginx有讲到过
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)

如果是公司内部的产品就没必要用redis,互联网公司就比较多使用redis,因为全世界都可以用的产品有时候并发量会比较大

2、Redis安装配置

2.1Redis下载

redis官方网站:http://Redis.io
redis官方中文网站:http://www.Redis.net.cn/(不推荐,这个中文网站会滞后,安装包什么的都可能会比较老)
官网地址:http://redis.io/

下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
在Linux中使用wget下载到linux或者下载到window在上传到linux
wget http://download.redis.io/releases/redis-3.0.0.tar.gz

特别需要注意,我们只考虑Linux版本,不用考虑windows版本,因为redis的最大功效在windows下发挥不出来

最新的可能已经到了4.0或者5.0了,我们不用这个最新的,我们用3.0的就行

2.2Redis安装

Redis是C语言开发,在linux上运行才能发挥它的最佳性能
使用Centos6.8作为安装环境

1、下载获得redis-3.2.5.tar.gz后将它放入我们的Linux目录/opt

在公司都是把安装包放到opt下的

2、解压命令:tar -zxvf redis-3.2.5.tar.gz


解压

3、解压完成后进入目录:cd redis-3.2.5 执行make命令



报错看第4步的解决办法,报错原因,是因为需要依赖gcc,,而gcc命令未找到

4、在redis-3.2.5目录下执行make命令

运行make命令时出现故障意出现的错误解析:gcc:命令未找到
解决办法
能上网:yum install gcc-c++
不能上网:
执行 cd /media/CentOS_6.8_Final/Packages (路径跟centos5不同) 进入安装包目录
依次执行以下:
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh cpp-4.4.7-17.el6.x86_64.rpm
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh gcc-4.4.7-17.el6.x86_64.rpm

5、在redis-3.2.5目录下再次执行make命令

Jemalloc/jemalloc.h:没有那个文件
解决方案:运行make distclean之后再 make,
这是因为执行make之前先要清理一下垃圾,之前没有gc++的时候产生了很多垃圾
注意。这里的make只是执行了编译,还需要安装才可以使用redis

6、继续执行make install(即安装)

Redis Test(可以不用执行)
执行完make后,跳过Redis test 继续执行make install

注意
我们的Linux有两个目录我们要记清楚,一个是opt是放安装包的,还有另外一个目录是安装的类似与我们windows下的Program Files或者Program Files (x86)
我们来看看是哪个目录


注意,默 认安装目录要么是usr/local/bin,要么是usr/bin
而这两个目录下的文件,我们在任何目录下都可以执行(运行)

怎么启动redis



这样就启动了,但是我们发现一个问题,在Linux里面我们启动了redis之后,就没办法进行其它操作了
这肯定不行
我们得想,能不能让它后台运行呢?
答案肯定是可以的,重点就是要怎么操作
通过redis的配置文件,设置它在后台运行

【先退出当前,Ctrl+C】
配置文件先备份一下




改完之后再次启动

上图启动redis的方式就是,启动redis,但是指定配置文件启动
这种在后台运行就不会有第一次前台运行那种界面出来了
那么,我们怎么知道它有没有运行起来呢?


现在后台已经确定起来了,那么我们可以进程redis的操作了
redis的操作我们需要通过它的客户端来进行操作




如果不想操作了,想退出怎么操作,
一个是万能的Ctrl+C,但是Ctrl+C只是把客户端退出了,服务还在运行

实际演示一下

redis-server /myredis/redis.conf

还有一种就是不进去,也能关闭

至此redis基本操作就完成了

ps -ef|grep redis 查看状态
redis-server /myredis/redis.conf 通过指定的配置文件 运行redis
redis-cli 运行redis客户端(得先启动好redis才能运行客户端)
redis-cli shutdown 关闭redis



你只要能够登录进来,这16个库你就可以任意操作,因为redis是没有权限的
还有一个特点就是统一的密码管理,这16个库要么都能够连上,要么都连不上
正是因为这个原因,造成了在企业里面1-15号库基本上没有人用,几乎全部都是默认用0号库
想一个问题,在1号库存的东西,在0号库能拿到吗?

所以企业开发中我们都是用0号库

Redis是单线程为什么却能够解决多线程的问题,因为它是结合Linux多路复用技术

面试的时候问redis是多线程还是单线程,一定要回答单线程,如果回答多线程就说明你redis没有学好
redis是单线程,但是结合Linux之后,它的切换非常快,所以看起来就非常快,好像是多个人(多线程)一起操作一样
如果是windows中就没办法,在windows中就是串行,不是并行了,没办法处理多任务,
这也是为什么我们学redis在Linux下安装redis的原因,因为windows中数据量大的时候没办法发挥redis的最大性能,这个差别是非常大的

第二种方式,使用Centos6.5作为安装环境。
第一步:在VMware中安装CentOS(参考Linux教程中的安装虚拟机)
第二步:在Linux下安装gcc环境(该步骤可以省略,CentOS中默认自带C环境)

第三步:将下载的Redis源码包上传到Linux服务器中【如果是linux直接下载的,就省略这个步骤】

第四步:解压缩Redis源码包

# tar -zxf redis-3.0.0.tar.gz 【直接解压到当前文件夹】 我们这里直接解压到当前目录即可
# tar -zxf redis-3.0.0.tar.gz -C + 指定目录 【解压到某个目录】

第五步:编译redis源码
(因为是源码,所以需要编译,就好像我给你一个java文件,如果要运行看效果那就得编译成.class文件才能编译)

# cd redis-3.0.0
# make

c语言的东西,编译就用make

第六步:安装redis

# make install PREFIX=/usr/local/redis


小结:
安装有些东西,你只需要解压就行了;(比如tomcat,因为tomcat是用java语言写的,不需要编译)
安装有些东西,你不仅需要解压,还需要编译(用其它语言写的)
安装有些东西,你只需要编译(用其它语言写的)

2.3Redis启动

2.3.1前端启动

启动方式:
直接运行bin/redis-server将以前端模式启动。【bin目录是在/usr/local/redis/bin】

# ./redis-server
或者直接redis-server(安装完了的程序都可以在任意目录执行/运行)

启动缺点:
ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法
启动图例:

前端启动的关闭:ctrl+c

2.3.2后端/后台启动

第一步:将redis源码包中的redis.conf配置文件复制到/usr/local/redis/bin/下

# cd /root/redis-3.0.0
# cp redis.conf /usr/local/redis/bin/   

第二步:修改redis.conf,将daemonize由no改为yes

# vi redis.conf


第三步:执行命令

# ./redis-server redis.conf

后端启动的关闭方式
非正常关闭(不推荐使用):
# kill 5528 正常关闭:# ./redis-cli shutdown`

以上是关于redis01_介绍与安装_NoSqlRedis(redis不需要考虑windows上面的支持,只需要考虑Linux)Linux的默认安装目录usr/local/bin的主要内容,如果未能解决你的问题,请参考以下文章

redis学习——day01_redis简介与安装

02_Redis入门介绍--3_Redis的安装

redis实战_01_yucong_redis安装

NoSqlRedis实践篇-简单demo实现

Redis_01

Redis_01