Redis介绍和安装

1.NoSql概述

为什么要用Nosql

1、单机Mysql年代

在这里插入图片描述
  90年代,业务访问量不多,一个基本的网站单个数据库完全足够

2、Memcached(缓存)+Mysql+垂直拆分(读写分离)

  网站80%的情况都在读,每次都要取查询数据库的话就十分麻烦!为了减轻数据压力,我们使用缓存来保证效率。

发展过程:优化数据结构和索引->文件缓存(IO)->Memcached(当时最热门技术)
在这里插入图片描述

3、分库分表+水平拆分+Mysql集群

技术和业务在发展的同时,对人的要求也越来越高
本质:数据库的读和写
早些年MyISAM:表锁,(读写时,所在的表被锁,十分影响并发性)
Innodb:行锁
在这里插入图片描述

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

在这里插入图片描述

为什么要用NoSQL

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长!
这时候我们就需要使用NoSQL数据库,NoSQL可以很好的处理以上情况!

什么是NoSql

NoSql

NoSql = Not Only Sql(不仅仅是Sql)
关系型数据库:表格,行,列
泛指非关系型数据库,传统关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区。NoSql在当今大数据环境下发展十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!
很多的数据类型用户的个人信息,社交网络,地理位置。这些数据类型存储不需要一个固定的格式,不需要多余的操作就可以横向扩展!使用键值对来存放。

NoSql特点—解耦

1、方便扩展(数据之间没有关系,很好扩展)
2、大数据量高性能(NoSql的缓存记录级,是一种细粒度的缓存,性能会比较高)
3、数据类型是多样型(不需要设计数据库,随取随用)
4、传统的RDBMS和NoSql

传统的 RDBMS(关系型数据库)
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 操作语言,定义语言
- 严格的一致性
- ...
Nosql
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,文档存储,图形数据库(社交关系)
- 最终一致性
- CAP定理和BASE (异地多活)
- 高性能,高可用,高可扩
- ...

了解:3V+3高

● 大数据时代的3V:主要是描述问题的
1、海量Volume
2、多样Variety
3、实时Velocity
● 互联网需求的3高:主要是对程序的要求
1、高并发(Java JUC)
2、高可拓(随时水平拆分,机器不够了,扩展机器来解决)
3、高性能(保证用户体验和性能)

阿里巴巴演进分析

阿里巴巴中文站架构设计实践

推荐文章:阿里云的这群疯子—-认输,才是真的输了

NoSql的四大分类

KV键值对

  • 新浪:Redis
  • 美团:Redis+Tair
  • 阿里、百度:Redis+MemCache

文档型数据库:(bson格式和json一样)

  • MongoDB
    • mongodb基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档
    • MongoDB是一个介于关系型数据库和非关系型数据库中间的产品,MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的。
  • ConthDB

列存储数据库

  • HBase
  • 分布式文件系统

图关系数据库(不是存图形,放的是关系)

  • neo4j
  • InfoGrid
  • redisgraph

2.Redis入门

概述

Redis是什么?

Redis(Remote Dictionary Serve),即远程字典服务

Redis能干嘛?

1、内存存储,持久化,内存中是断电即失,所以说持久化很重要(rdb、aof)
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量! )

特性

1、多样的数据类型
2、持久化
3、集群
4、事物

学习中用到的东西

官网:https://redis.io/
中文网:http://www.redis.cn/

Windows下安装

下载

https://github.com/tporadowski/redis/releases

在这里插入图片描述

解压后的目录如下

在这里插入图片描述

文件介绍

  • redis-server.exe:服务端程序,提供 Redis 服务。
  • redis-cli.exe: 客户端程序,通过它连接 Redis 服务并进行操作。
  • redis-check-dump.exe:RDB 文件修复工具。
  • redis-check-aof.exe:AOF 文件修复工具。
  • redis-benchmark.exe:性能测试工具,用以模拟同时由 N 个客户端发送 M 个 SETs/GETs 查询(类似于 Apache 的 ab 工具)。
  • redis.windows.conf: 配置文件,将 Redis 作为普通软件使用的配置,命令行关闭则 Redis 关闭。
  • redis.windows-service.conf:配置文件,将 Redis 作为系统服务的配置。

使用

双击 redis-server.exe,会弹出窗口一闪而过,如果不想窗口消失,可以在 cmd 中打开。

在这里插入图片描述
这里启动的是 Redis 的服务端,用于提供服务。

双击 redis-cli.exe

在这里插入图片描述
这里启动的是 Redis 的客户端,用于连接服务。

测试使用

在这里插入图片描述
如此即说明 Redis 可以正常使用。

Windows 下安装和使用 Redis 都非常简单,但官方并不推荐

在这里插入图片描述

官方建议使用 Linux 进行部署。

Redis 可以在其他操作系统中工作,但这种支持是尽力而为的。Windows 版本没有官方支持。

Linux下安装

这里以 CentOS 7 系统为例

环境准备

由于 Redis 由 ANSI C 编写,安装 Redis 前需要先安装 C 语言环境。
yum install gcc-c++
有的自带了c环境,就不需要安装了
通过 gcc -v 查看安装的c环境版本,看看是否已存在

下载

访问 Redis 官方:https://redis.io/
在这里插入图片描述

解压

tar -zvxf redis-6.2.6.tar.gz

移动

一般都会将 redis 目录放置到 /usr/local/redis 这里将目前在 /home/kwok目录下的 redis-6.2.6 文件夹更改目录,同时更改文件夹名称为 redis
mv /home/kwok/redis-6.2.6 /usr/local/redis

编译

跳转到 /usr/local/redis
make
最后输出如下内容即代表编译成功
在这里插入图片描述

安装

make PREFIX=/usr/local/redis install
这里多了一个关键字 PREFIX=
这个关键字的作用是编译的时候用于指定程序存放的路径。
比如我们现在就是指定了 redis 必须存放在 /usr/local/redis 目录。
假设不添加该关键字 Linux 会将可执行文件存放在 /usr/local/bin 目录。
这里指定号目录也方便后续的卸载,后续直接 rm -rf /usr/local/redis 即可删除 redis。

启动

我们一般需要后台启动 Redis :
这里有两种方式:命令带&和修改配置文件

方式1:命令带&

./bin/redis-server& ./redis.conf

[root@sail redis]# ./bin/redis-server& ./redis.conf
[1] 11953
-bash: ./redis.conf: Permission denied
[root@sail redis]# 11953:C 15 Mar 2022 16:15:10.803 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11953:C 15 Mar 2022 16:15:10.803 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=11953, just started
11953:C 15 Mar 2022 16:15:10.803 # Warning: no config file specified, using the default config. In order to specify a config file use ./bin/redis-server /path/to/redis.conf
11953:M 15 Mar 2022 16:15:10.803 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 11953
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
11953:M 15 Mar 2022 16:15:10.804 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
11953:M 15 Mar 2022 16:15:10.804 # Server initialized
11953:M 15 Mar 2022 16:15:10.804 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
11953:M 15 Mar 2022 16:15:10.804 * Ready to accept connections

这种方式需要在启动命令中带 & 才行,不太方便,一般都是通过修改配置文件实现。

方式2:修改配置文件

redis.confdaemonize no 改为 daemonize yes 即可。
修改后不带 & 也可以后台启动。在redis路径下
./bin/redis-server ./redis.conf
因为我拷贝了一份redis.conf文件放到/usr/local/bin/kwokconfig下面了,所以启动为:
/usr/local/redis/bin/redis-server /usr/local/bin/kwokconfig/redis.conf 有的版本启动后没提示

查看

查看进程方式
ps -ef|grep redis

[root@sail redis]# ps -ef|grep redis
root     11953  3410  0 16:15 pts/1    00:00:02 ./bin/redis-server *:6379

查看端口方式
Redis 的默认端口为 6379,一般不会更改,可以通过该端口查询 Redis 允许情况。
netstat -lanp | grep 6379

[root@sail redis]# netstat -lanp | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      11953/./bin/redis-s

环境变量配置

为方便使用,建议先配置 Redis 的环境变量。
vim /etc/profile
在这里插入图片描述
source /etc/profile

性能测试

bin 目录下的 redis-benchmark 可以进行性能测试

  • -c(clients):客户端的并发量(默认 50)。
  • -n(num):客户端请求数量(默认 100000)。
  • -q:仅仅显示 redis-benchmark 的 requests per second 信息。
  • -r(random):向 Redis 插入更多随机的值。
  • -P :每个请求pipeline的数据量(默认为 1)。
  • -k :客户端是否使用 keepalive,1 为使用,0 为不使用,默认值为 1。
  • -t:对指定命令进行基准测试。
  • –csv:将结果按照 csv 格式输出。

redis-benchmark -h localhost -p 6379 -c 100 -n 100000

使用

redis-cli 是连接本地redis服务的一个命令,通过该命令后可以进入 redis 的脚本控制台。
配置好环境变量后任意目录下输入 redis-cli 即可进入。

[root@sail etc]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello Hello World
(error) ERR syntax error
127.0.0.1:6379> set hello "Hello World"
OK
127.0.0.1:6379> get hello
"Hello World"

这样 Redis 在 Linux 上就安装完毕了。

退出redis客户端和关闭redis服务端
在这里插入图片描述
直接ctrl c只能退出客户端,服务端没有退
在这里插入图片描述

测试性能

redis-benchmark是一个压力测试工具
官方自带性能测试工具

Redis性能测试

测试一下:

# 测试: 100个并发,100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值