# 介绍

# 引言

问题:

  1. 由于用户量增大,请求数量也随之增大,频繁的 io 访问使数据库压力过大。

  2. 多台服务器之间,数据不同步。(比如用户在服务器 1 上进行了登录,此时 session 信息只在服务器 1 上有,服务器 2、3… 没有数据,就会造成用户可能要进行多次登录)

  3. 多台服务器之间的锁,已经不存在互斥性了。

redis 如何解决:

  1. redis 是基于内存存储数据和读取数据的,这样就可以减少 io 访问。
  2. 可以将之前存储在 session 中的共享数据统一的存放在 redis 中。
  3. redis 基于接收用户的请求是单线程的,保证数据一致性。

# NoSQL

Redis 就是一款 NoSQL。

NoSQL --> 非关系型数据库 --> Not Only SQL。

NoSQL 数据库被分为以下四种:

  1. Key-Value:Redis …
  2. 文档型:ElasticSearch、Soir、MongoDB …
  3. 面向列:Hbase、Cassandra … (一般情况下是大数据方向使用的)
  4. 图形化:Neo4j … (一般建模用)

除了关系型数据库都是非关系型数据库。

NoSQL 只是一种概念,泛指非关系型数据库,目的是和关系型数据库做区分。

# Redis 介绍

Redis:

  • Redis(Remote Dictionary Server) 即 远程字典服务

  • Redis 是由 C 语言编写的

  • Redis 是一款基于 Key-Value 的 NoSQL

  • Redis 是基于内存存储数据的,同时提供了多种持久化机制

  • 性能可达 110000/s 读取数据,81000/1s 写入数据

  • 提供主从、哨兵以及集群的搭建方式,可以更方便的横向扩展以及垂直扩展。

# Redis 安装

Redis 安装目录介绍 目录位置
官网下载目录: /opt
普通 Redis 安装目录: /usr/local/redis
Docker 安装目录: /usr/local/docker/redis
Redis 集群方式: RedisCluster 6 台服务器

官网:https://redis.io/

官网下载:https://redis.io/download

# 安装 gcc

因为 redis 是用 c 语言编写的,所以要确保 Linux 上有 c 语言环境,使用 root 登录,并确保 Linux 能连外网

yum -y install gcc automake autoconf libtool make

# 安装 redis

# 下载 redis 二进制安装包

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

# 解压到 /opt 目录下

tar zxvf redis-6.2.6.tar.gz -C /opt
# 并进入opt目录
cd opt

# 编译

cd /opt/redis-6.2.6 && make AMLLOC=libc

安装成功出现如下信息:

安装成功

# 指定安装位置

make PREFIX=/usr/local/redis install

(安装编译后的文件)安装到指定目录:

注意:PREFIX 必须大写、同时会自动创建 redis 目录,并将结果安装到此目录

# 查看安装后的文件

安装后文件

# Redis 启动

# 启动 Redis 服务端

进入对应的安装目录:

cd /usr/local/redis

执行命令:

./bin/redis-server

# 启动 Redis 客户端

在 redis 的安装目录中有 redis 的客户端,即 redis-cli(Redis Command Line Interface),

它是 Redis 自带的基于命令行的 Redis 客户端。

进入 Redis 客户端(重新打开一个终端) 进入对应的安装目录

cd /usr/local/redis

执行命令:

./bin/redis-cli

# 启动 Redis 客户端命令语法:

redis-cli -h IP地址 -p 端口   # 默认IP本机  端口6379

退出客户端命令:Ctrl+C

检测是否服务端启动

启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。

$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PING
# 以上,连接到本地的redis服务并执行PING命令,这个命令用于检测redis服务是否启动