Linux安装Redis

Redis理论

NoSql概述

NoSql
说Redis之前,首先还是要理解Nosql,毕竟Redis是NoSql的一员

Nosql是Not Only Sql的缩写,指的是非关系型数据库,是对不同于传统的关系型数据库的数据管理系统的统称。

NoSql适用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余的操作就可以横向扩展

简单说一下
Nosql和关系型数据库的区别

  • 存储方式

    • 关系型数据库是表格式的,因此存储在表的行和列,他们之间很容易关联协作存储,提取数据很方便,例如Mysql的多表连接
    • NoSql则与其相反,它是大块的组合在一起,通常存储在数据集中
  • 存储结构

    • 关系型数据库对应的是结构化数据,数据表都预先定义了结构(例如列的定义),虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难
    • NoSql基于动态结构,使用非结构化数据,因为NoSql数据库是动态结构,可以更好的适应数据类型和结构变化
  • 存储规范

    • 关系型数据库会把数据分割为最小的关系表以避免重复,获得精简的空间利用,但是单个操作设计到多张表时,数据管理就会比较麻烦
    • NoSql数据存储在平面数据集中,数据经常可能会重复,数据库很少被分隔开,而是存储成一个整体,整块数据更加便于读写
  • 存储扩展(最大的区别)

    • 关系型数据库是纵向扩展,因为数据存储在关系表中,操作的性能瓶颈可能涉及多个表,需要通过提升计算机性能来克服
    • NoSql是横向扩展,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载

      解释一下横向扩展和纵向扩展
      横向扩展:已扩展服务器的数量进行高并发的处理(增强处理业务的能力),根据配置nginx的反向代理,转发服务器(配置的ip)进行轮换处理业务(可加入负载均衡器进行分发请求)
      纵向扩展:增加单机的处理能力,一般增加cpu的处理能力

  • 查询方式

    • 关系型数据库通过结构化查询语言来操作数据库,即我们常说的SQL
    • NoSql查询以块为单元操作数据,使用的是非结构化查询语言(UnQI),它是没有标准的
  • 事务

    • 关系型数据库遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))
    • Nosql遵循BASE原则(基本可用(Basically Availble)、软/柔性事务(Soft-state)、最终一致性(Eventual Consistency))。
    • 由于关系型数据库的数据强一致性,所以对事务的支持很好,关系型数据库支持对事务原子性细粒度控制,易于回滚事务,而Nosql数据库是在CAP(一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好
  • 性能

    • 关系型数据库为了维护数据的一致性付出了巨大的代价,读写性能较差,在面对高并发读写性能非常差,面对海量数据的时候效率非常低
    • Nosql存储的格式是key-value型的,并且存储在内存中,非常容易存储,而且对于数据的一致性是弱要求,Nosql无需sql的解析,提高了读写性能

Redis概述

emmm,本来以为Nosql稍稍写一点,结果就又多了,好吧,终于来到了Redis的环节

  • Redis
    • Redis是NoSql的一种,开源,可以用作数据库、缓存、消息中间件,是一个高性能的key-value数据库
    • 支持多种存储类型,String、list(链表)、set(集合)、zset(有序集合)、dict(hash表),这些数据类型都支持push/pop、add/remove及取交集并集和差集等操作
    • redis会周期性的把更新的数据写入磁盘或把修改操作写入追加的记录文件,并且在此基础上实现主从节点同步
  • Redis优点
    • 所有数据操作均在内存中完成(包括对数据的存储)
    • 单线程服务(这意味着会有较多的阻塞情况),采用epoll模型进行请求响应,对比nginx
    • 支持主从复制模式,更提供了高可用主从复制模式
    • 去中心化分布式集群
    • 丰富的接口支持 ,Python、Golang、Java、php、Ruby、Lua、Node.js
    • 功能丰富、除了支持多种数据结构外,还支持事务、发布/订阅、消息队列等功能
    • 支持数据持久化(AOF、RDB),可以将内存中的数据保存在磁盘中,重启时可以再次加载进行使用
    • 性能极高,Redis能读的速度是11000次/s,写的速度是81000次/s
    • 原子,Redis的所有操作都是原子性的,即要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务

Redis的应用场景理解

上文说到redis可以用作数据库、缓存、消息中间件,那么就稍微说下redis在不同场景下的具体用途(数据库就不必说了,就是存储数据,主要说下缓存和消息中间件)

缓存应用场景

场景描述:多个用户访问客户端,请求同一数据,例如多个用户都去访问某网站主页,网站服务器需要多次访问数据库,但拿到的是同一数据,非常浪费资源

这种时候,就可以通过构建一个redis集群,使redis作为缓存,当客户端发送请求时,服务器先在redis中查询

  • 若在redis中命中,则服务器直接返回数据
  • 若在redis中未命中,则服务器查询数据库后将数据保存到redis中
  • 另一方面,可以在保存数据时,添加失效时间,确保数据可以在一定时间内进行刷新

那么什么类型的数据适合存储在缓存内呢,即对时效性要求不高的数据,简单来说,存储在缓存里的数据不能经常被修改

消息中间件应用场景

场景描述:用户发布博客,其他用户可对该文章进行点赞,一个用户可为多篇文章点赞,一篇文章可被多个用户点赞
显然,文章和用户点赞的关系是多对多关系,这个数据量,关系型数据库已经无法满足了

但是,这种需要能存储海量数据的场景,并且还要响应速度快的,redis能够满足
上述这样的场景,在redis里,可以将文章设置为key,用户为value,后将value保存为set类型的数据结构来解决

Redis安装

环境

Centos 7
redis-4.0.14安装包
XShell6
IDEA 2020

具体步骤

  • 友情提示
    首先非常重要的一点,在Centos中不要随意的使用rm -rf去删除文件,而是将/tmp目录看做回收站,以防止文件被删除后无法找回
  • Xshell传输redis安装包
    Xshell中alt+p可以打开新的主页进行文件传输
    在这里插入图片描述
    使用sftp将redis的安装包从本地上传到Centos主机
    在这里插入图片描述
    可以看到/root下已经有redis的安装包了
    在这里插入图片描述
  • 对redis压缩包解压编译
    解压在这里插入图片描述
    可以看到解压后的文件夹
    在这里插入图片描述

进入解压后的目录后进行编译
在这里插入图片描述

  • 将redis安装到一个目标路径
    因为当前redis是4.0版本,所以需要将redis安装到一个目标路径
    在这里插入图片描述
    可以看到已经安装到redis里了
    在这里插入图片描述
    我们可以在redis/bin里看到redis-server
    在这里插入图片描述
  • 拷贝redis.conf文件到redis文件夹中
    因为后期要配置redis集群,暂时就先不去配置redis的环境变量了
    我们将解压后的redis-4.0.14中的配置文件拿到新建的redis文件中,即redis.conf
    在这里插入图片描述
    拷贝到redis目录
    在这里插入图片描述
  • 借IDEA修改redis.conf文件
    我们要修改redis.conf文件,但在linux系统下,使用vim查找信息并进行修改并不方便
    所以我们借助IDEA来修改
    redis.conf需要修改的参数如下:
    在这里插入图片描述
    Centos主机链接IDEA
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    就可以看到IDEA链接到了Centos内部的文件
    在这里插入图片描述
    双击打开redis.conf进行修改
    修改完成后,点击上传到远程centos主机
    在这里插入图片描述
    在centos使用vim命令查看redis.conf文件,可以看到所需字段已经被更改
    在这里插入图片描述
  • 使用redis.conf进行启动redis服务器
    指定使用修改过后的redis.conf进行启动redis服务器
    用ps -ef | grep redis可以看到我们启动的redis
    在这里插入图片描述
  • 启动redis客户端
    bin下可以看到redis-cli,这是redis的客户端,我们使用它来链接redis服务器
    在这里插入图片描述
    启动redis客户端
    在这里插入图片描述
    redis命令使用示例
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值