Redis系列一 | 入门概述与安装

1.1 Nosql

1.1.1 概述

单机mysql时代:

90年代,一个基本的网站访问量不会太大,单个数据库足够!

更多的使用静态网页html

网站瓶颈:

  • 数据量太大,一个机器放不下
  • 数据的索引,一个机器的内存也放不下
  • 访问量太大,读写混合,性能问题

缓存时代:

memcached(缓存)+mysql+读写分离(垂直拆分)

网站百分之80情况都是在读,每次都要去数据库查询太麻烦,减轻数据库的压力,可以使用缓存来保证效率(Cache)-------解决读的问题

发展过程:优化Mysql底层结构和索引–>文件缓存(IO操作)—>Memcached 当时最热门的技术!

分库分表+水平拆分+mysql集群:

技术和业务发展同时,对技术要求也越来越高

本质: 数据库(读、写)

早些年 MyISAM:表锁,影响效率,高并发下出现严重的锁问题

早些年Innodb:行锁

慢慢地使用分库分表来解决写的压力!并没有多少公司使用

Mysql集群,很好满足了个别需求

最近的年代:

2010-2020 技术发展迅速(定位、音乐、热榜)

Mysql等关系型数据库就不够用了,数据量很多,变化很快

目前一个基本的互联网项目:

image-20211110112947292

为什么要用Nosql

  • 用户的个人信息、地理位置、社交网络、用户自己产生的数据、用户日志等等爆发式增长!

这时候可以使用Nosql数据库处理以上的情况!

1.1.2 什么是NoSQL

NoSQL

NoSQL=not only sql

SQL:表格,行,列

泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区!

NoSQL在当今大数据时代发展迅速,REDIS发展是最快的,、

NoSQL特点

  • 方便扩展(数据之间没有关系,很好扩展,没有耦合性)

  • 大数据量下的高性能(redis一秒可以写8W次,可以读取11w次,NoSQL的缓存级别,是一种细粒度的缓存,性能会比较高!)

  • 多类型(不需要事先设计数据库!随取随用!如果是数据量十分大的表,很多人无法设计)

  • 传统RDBM和NoSQL:

    结构化组织

    SQL

    数据和关系都存在单独的表中

    数据操作语言,数据定义语言,

    严格的一致性

    基础的事务

​ 不仅仅是数据

​ 没有固定的查询语言

​ 键值对存储,列存储,文档存储,图形数据库(社交关系)

​ 最终一致性

​ CAP定理、 BASE (异地多活)初级架构师!

​ 基本的高性能、高可用、高可扩展

​ …

扩展:大数据的3v和3高

描述问题:海量、多样、实时

程序要求:高并发、高可用、高性能

1.1.3 NoSQL的分类

KV键值对

  • 新浪:redis
  • 美团:redis+Tair
  • 阿里、百度:redis+memcache

文档型数据库(bson格式json)

  • MongoDB(一般必须掌握)

    基于分布式文件存储的数据库,C++编写,处理大量的文档!

    是一个介于关系型数据库和非关系型数据库中间的产品,是非关系型数据库中功能最丰富的,最像关系型数据库的!

  • ConthDB

列存储数据库

  • HBase
  • 分布式文件系统

图形关系数据库

  • 不是放图片的,是放关系的:朋友圈社交网络、广告推荐!

  • Ne04j, infoGrid

NoSQL的对比

image-20211110140516643

1.1.4 Redis

redis–Remote Dictionary Server

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。免费且开源,当前最热门的NoSql之一

能干嘛?

  • 内存存储、持久化,内存中是断电即失去,所以说持久化很重要(rdb/aof)

  • 效率高、可以用于高速缓存

  • 发布订阅系统

  • 地图信息分析

  • 计时器、计数器(浏览量)

特性

  • 多样的数据类型
  • 持久化
  • 集群
  • 事务

学习中需要用到的东西

  • 官网
  • 中文网
  • 下载地址:通过官网(官方不建议用windows开发使用)

1.2 Redis的安装

1.2.1 windows安装

  • 下载安装包 https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

  • 解压到特定文件夹

image-20211110144146651

  • 开启Redis:双击运行运行服务(秒级启动)

image-20211110144345596

默认端口:6379

  • 使用Redis客户端连接

image-20211110144527030

测试连接:

image-20211110144636146

  • ping测试 返回PONG
  • 设置一个key值 然后get获取

windows下使用确实简单,但是推荐使用linux去开发使用

1.2.2 Linux安装

1.2.2.1 下载安装包

redis-6.0.6.tar.gz

image-20211110150042707

image-20211110150351900

1.2.2.2 解压安装包

并进入

tar -zxvf redis-6.0.6.tar.gz

image-20211110151738722

配置文件:redis.conf

1.2.2.3 基础环境安装
  1. yum install gcc-c++

  2. gcc -v

image-20211110202605087

  1. make(需要一点时间)

image-20211110203041027

报错,原因分析:gcc版本过低,升级一下

# 升级gcc版本
$ yum -y install centos-release-scl
$ yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
$ scl enable devtoolset-9 bash
# 升级后查看下版本
$ gcc -v

image-20211110203444120

重新执行make

image-20211110203554428

  1. make install (也可以不用执行,确认一下安装)

image-20211110203649438

所有东西已安装好了

1.2.2.4 确认安装路径

Redis默认安装路径:/usr/local/bin

image-20211110203911202

1.2.2.5 复制配置文件

复制Redis配置文件到当前目录下

# 创建配置文件文件夹并复制配置文件
$ mkdir hconfig
$ cp /opt/redis-6.0.6/redis.conf hconfig

image-20211110204257939

之后就使用这个配置文件进行启动

1.2.2.6 配置后台启动

Redis默认不是后台启动的,需要修改配置文件

# 修改daemonize为yes
$ vim redis.conf

image-20211110204551386

1.2.2.7 启动Redis服务

启动Redis服务

通过指定的配置文件启动服务

redis-server hconfig/redis.conf

image-20211110204822143

1.2.2.8 测试连接

测试连接

使用Redis客户端进行连接

# 连接
$ redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name yunmx   # 设置一个key
OK
127.0.0.1:6379> get name		# 读取一个key
"yunmx"
127.0.0.1:6379> keys *			# 查询所有的key
1) "name"
127.0.0.1:6379> 

image-20211110205104685

1.2.2.9 查看进程

查看Redis的进程是否开启

ps -ef |grep redis

image-20211110205444644

1.2.2.10 关闭Redis服务

关闭redis服务

shutdown

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> shutdown
not connected> exit

image-20211110205840394

1.3 Redis性能测试工具

1.3.1 redis-benchmark

官方自带的性能测试工具—>

redis-benchmark

命令参数:

image-20211110211023859

简单测试:

# 测试100个并发连接,每个并发20个请求
$ redis-benchmark -h localhost -p 6379 -c 100 -n 20

image-20211110211348330

1.3.2 如何分析

查看分析:

====== PING_INLINE ======
  100000 requests completed in 1.46 seconds   	# 100000次ping请求在1.46s内完成
  100 parallel clients							# 100的并发量
  3 bytes payload								# 3字节数据写入
  keep alive: 1									# 保证一台服务器测试(单机性能)
  host configuration "save": 900 1 300 10 60 10000
  host configuration "appendonly": no
  multi-thread: no

0.00% <= 0.5 milliseconds						# 0.5毫秒内完成百分之0的请求
1.37% <= 0.6 milliseconds
11.42% <= 0.7 milliseconds
23.22% <= 0.8 milliseconds
35.29% <= 0.9 milliseconds
47.60% <= 1.0 milliseconds
60.01% <= 1.1 milliseconds
72.40% <= 1.2 milliseconds
84.82% <= 1.3 milliseconds
94.78% <= 1.4 milliseconds
97.65% <= 1.5 milliseconds
98.50% <= 1.6 milliseconds
98.95% <= 1.7 milliseconds
99.28% <= 1.8 milliseconds
99.51% <= 1.9 milliseconds
99.67% <= 2 milliseconds
99.99% <= 3 milliseconds
100.00% <= 3 milliseconds						# 3毫秒内完成100%的请求(100000)
68587.11 requests per second					# 平均每秒完成的请求数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值