Redis 第1章 Redis入门

63 篇文章 5 订阅
63 篇文章 0 订阅

1 Redis入门

1. 互联网项目架构演变

随着访问量上升,大部分使用MySQL架构的网站在数据库上都开始出现性能问题,Web程序不能再仅仅专注在功能上,同时也在追求性能。开始使用缓存技术缓解数据库压力,优化数据库的结构和索引。刚开始时比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大,文件缓存中的数据不能在多台Web服务器之间共享,大量的小文件IO也带来了比较高的IO压力。在这种情况下,Memcache就成了一款非常有效的解决方案。

Memcache作为一个独立的分布式缓存服务器,为多个Web服务器提供了一个共享的高性能缓存服务,在Memcache服务器上,又发展了根据hash算法来进行多台Memcache缓存服务的扩展,然后又出现了一致性hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存失效问题。

由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了

在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶

颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

同时,开始流行使用分表分库来缓解写压力和数据增长的扩展问题。这个时候,分表分库成了一个热门技术,是业界讨论的热门技术问题。也就在这个时候,MySQL推出了还不太稳定的表分区,这也给技术实力一般的公司带来了希望。虽然MySQL推出了MySQL Cluster集群,但性能也不能很好满足互联网的要求,只是在高可靠性上提供了非常大的保证。

MySQL数据库也经常存储一些大文本字段,导致数据库表非常的大,在做数据库恢复的时候就导致非常的慢,不容易快速恢复数据库。比如1000万4KB大小的文本就接近40GB的大小,如果能把这些数据从MySQL省去,MySQL将变得非常的小。关系数据库很强大,但是它并不能很好的应付所有的应用场景。MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用MySQL的开发人员面临的问题。

 

现在的互联网架构

目前互联网的新要求:3V和3高

大数据时代的3V

Volume:海量,数据量极大

Variety:多样  

数据类型:文本、图片、音频、视频……

    终端设备:PC、移动端、嵌入式设备……

Velocity:实时

直播,金融证券……

互联网时代的3高

高可扩

不断优化现有的功能,不断开发新的功能;

高性能

不能让用户感觉到等待的时间;

高并发

同时处理并发请求的能力,如双十一的秒杀、抢购火车票;

提升硬件,优化系统,优化项目,将费时的操作进入异步处理;

 

2. NoSQL

不仅仅是SQL—关系型数据库的强大助力

NoSQL数据库的优势

  • 易扩展
    • NoSQL数据库种类繁多,但它们都有一个共通的特点:就是去除关系型数据库的“关系型”特点。数据之间无关系,这样就变得非常容易扩展,而相对应的来看:关系型数据库修改表结构非常困难。这就为项目架构设计提供了更大的扩展空间。
  • 大数据量高性能
    • NoSQL数据库都具有非常高的读写性能,尤其在大数据量的情况下,表现同样优秀。这得益于NoSQL数据库中数据之间没有“关系”,数据库结构简单。
    • 从缓存角度来看,MySQL的Query Cache是表级别的粗粒度缓存,假设存储了100条数据,其中有一条数据修改了,整个缓存失效,效率很低。而NoSQL数据库的缓存是记录级的细粒度缓存,任何一条记录的修改都不影响其他记录,效率很高。
  • 多样灵活的数据模型
    • NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增减修改字段简直就是一个噩梦。

3. Redis

3.1 简介

Redis:Remote Dictionary Server(远程字典服务器)

 

官网:

 

3.2 安装

①将Redis的tar包上传到opt目录

②解压缩

 

③安装gcc环境

我们需要将源码编译后再安装,因此需要安装c语言的编译环境!不能直接make!

两种方式: 

第一种:可以上网,yum install –y gcc-c++

第二种:不能上网,确保插入了安装光盘!(CentOS6)

挂载安装光盘,然后进入Packages中,依次执行以下命令:

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

 

不能上网,确保插入了安装光盘!(CentOS7)

挂载安装光盘,然后进入/run/media/root/CentOS 7 x86_64/Packages中

把如下安装包找出,复制到独立目录rpmgcc

进入rpmgcc该目录运行如下命令,按照依赖关系安装

rpm -Uvh *.rpm --nodeps --force

 

之后查看安装是否成功:rpm –qa|grep gcc

常见错误:在没有安装gcc环境下,如果执行了make,不会成功!安装环境后,第二次make有可能报错:

Jemalloc/jemalloc.h:没有那个文件

解决: 运行 make distclean之后再make

 

④编译,执行make命令!

⑤编译完成后,安装,执行make install命令!

⑥文件会被安装到 /usr/local/bin目录

⑦可以将redis的bin目录,加入到环境变量中

bin目录常用命令

Redis-benchmark

压力测试。标准是每秒80000次写操作,110000次读操作 (服务启动起来后执行,类似安兔兔跑分)

Redis-check-aof

修复有问题的AOF文件

Redis-check-dump

修复有问题的dump.rdb文件

Redis-sentinel

启动哨兵,集群使用

redis-server

启动服务器

redis-cli

启动客户端

3.3 启动

3.3.1 服务端启动

将配置文件,保留一份副本,进行启动。

命令: redis-server  conf

但是这样的话,发现命令窗口被占用了,很不方便。当然你可以再启动一个会话窗口。

 

解决:修改配置文件,改为守护进程,在后台运行

我们选择后台运行,怎么办?修改配置文件。

daemonize yes

后台启动后,查看服务: netstat –anp|grep 6379

3.3.2 客户端登录

命令

说明

举例

备注

redis-cli

启动客户端

redis-cli –p 端口号

连接指定的端口号

直接执行的话,默认端口号就是6379;

ping

测试联通

 

回复pong代表联通

exit

退出客户端

 

 

redis-cli shutdown

停止服务器

redis-cli -h 127.0.0.1 -p 6379 shutdown

停止指定ip指定端口号的服务器

redis是通过客户端发送停止服务器的命令

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。(关键词java,Linux,大数据,尚硅谷,IT)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值