一、Redis入门概述

1.1 Redis 是什么?

Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案

1.2 Redis 有什么作用?

  • 我们先介绍一下Redis数据库与传统数据库(MySQL)之间的关系:

Redis

MySQL

一种NoSQLkey-value数据库

一种关系型数据库

存储在内存

存储在磁盘

Redis在某一些场景使用中要明显优于mysql,比如计数器、排行榜等方面
Redis通常用于一些特定场景,需要与Mysql一起配合使用
两者并不是相互替换和竞争关系,而是共用和配合使用

redis 对应 jedis 版本 redis版本号有哪些_学习

  • 作用如下:
  • 可以做分布式缓存,逻辑位置在MySQL之前,减轻MySQL访问(数据操作)压力
  • 支持内存存储和持久化(RDB + AOF),Redis支持异步将内存中的数据写到磁盘上,不影响正常的服务
  • 支持高可用架构搭配:单机、主从、哨兵、集群
  • 也可以解决缓存穿透、击穿、雪崩等问题
  • 支持分布式锁、队列等

redis 对应 jedis 版本 redis版本号有哪些_redis 对应 jedis 版本_02

1.3 Redis 作为数据库有哪些优势?

  • Redis 读的速度可以达到 110000次/秒,写的速度可以达到 8100 次/秒 【高性能
  • 支持多种数据类型,例如:key-v,set,list,zsit,hash 等
  • Redis 支持数据持久化,可以将内存中的数据写入磁盘中,重启的时候可以再次加载进行使用
  • Redis 支持数据的备份 【master-slave模式的数据备份】

redis 对应 jedis 版本 redis版本号有哪些_学习_03

1.4 Redis 下载 与 Redis7新特性:

  • 版本号第二位如果是奇数,则为非稳定版本 如2.7、2.9、3.1
  • 版本号第二位如果是偶数,则为稳定版本 如2.6、2.8、3.0、3.2
  • Redis6Redis7 的部分新特性介绍:
  • Redis Functions
  • redis 对应 jedis 版本 redis版本号有哪些_redis 对应 jedis 版本_05

  • Client-eviction
  • redis 对应 jedis 版本 redis版本号有哪些_redis_06

  • Multipart AOF
  • redis 对应 jedis 版本 redis版本号有哪些_redis_07

  • ACL V2
  • redis 对应 jedis 版本 redis版本号有哪些_redis 对应 jedis 版本_08

  • 新增命令
  • redis 对应 jedis 版本 redis版本号有哪些_数据库_09

  • listpack 代替 ziplist 【在7.0版本已经没有了ziplist的相关配置】
  • redis 对应 jedis 版本 redis版本号有哪些_redis_10

  • 底层性能提升
  • redis 对应 jedis 版本 redis版本号有哪些_redis_11

  • 翻译为:
  • redis 对应 jedis 版本 redis版本号有哪些_redis 对应 jedis 版本_12

  • 总体概述:大体和之前的redis版本保持一致和稳定,主要是自身底层性能和资源利用率上的优化和提高

多AOF文件支持

7.0 版本中一个比较大的变化就是 aof 文件由一个变成了多个,主要分为两种类型:基本文件(base files)、增量文件(incr files),请注意这些文件名称是复数形式说明每一类文件不仅仅只有一个。在此之外还引入了一个清单文件(manifest) 用于跟踪文件以及文件的创建和应用顺序(恢复)

config命令增强

对于Config Set 和Get命令,支持在一次调用过程中传递多个配置参数。例如,现在我们可以在执行一次Config Set命令中更改多个参数: config set maxmemory 10000001 maxmemory-clients 50% port 6399

限制客户端内存使用 Client-eviction

一旦 Redis 连接较多,再加上每个连接的内存占用都比较大的时候, Redis总连接内存占用可能会达到maxmemory的上限,可以增加允许限制所有客户端的总内存使用量配置项,redis.config 中对应的配置项// 两种配置形式:指定内存大小、基于 maxmemory 的百分比。maxmemory-clients 1gmaxmemory-clients 10%

listpack紧凑列表调整

listpack 是用来替代 ziplist 的新数据结构,在 7.0 版本已经没有 ziplist 的配置了(6.0版本仅部分数据类型作为过渡阶段在使用)listpack 已经替换了 ziplist 类似 hash-max-ziplist-entries 的配置

访问安全性增强ACLV2

在redis.conf配置文件中,protected-mode默认为yes,只有当你希望你的客户端在没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no

Redis Functions

Redis函数,一种新的通过服务端脚本扩展Redis的方式,函数与数据本身一起存储。简言之,redis自己要去抢夺Lua脚本的饭碗

RDB保存时间调整

将持久化文件RDB的保存规则发生了改变,尤其是时间记录频度变化

命令新增和变动

Zset (有序集合)增加 ZMPOP、BZMPOP、ZINTERCARD 等命令,Set (集合)增加 SINTERCARD 命令LIST (列表)增加 LMPOP、BLMPOP ,从提供的键名列表中的第一个非空列表键中弹出一个或多个元素。

性能资源利用率、安全、等改进

自身底层部分优化改动,Redis核心在许多方面进行了重构和改进,主动碎片整理V2:增强版主动碎片整理,配合Jemalloc版本更新,更快更智能,延时更低,HyperLogLog改进:在Redis5.0中,HyperLogLog算法得到改进,优化了计数统计时的内存使用效率,7更加优秀,更好的内存统计报告,如果不为了API向后兼容,我们将不再使用slave一词…(政治正确)

二、安装配置

2.1 准备工作

  • 此处是通过 VMWare 创建 CentOS 虚拟机,然后再安装配置 Redis 为例 【默认电脑里面已经安装好了虚拟机】
  • 安装 Redis 的前提是具备 gcc 编译环境:
  • 我们可以通过 gcc -v 查看 gcc 的版本以及是否配备了 gcc 【推荐版本在 3.8.4 以上(不包括这个版本)】
  • 通过 yum install gcc- c++安装 c++ 编译环境
  • 安装结束后,再次通过 gcc --version 查看

2.2 具体配置环节

我们要将下好的 Redis 的压缩包放到我们Linux操作系统的 /opt 目录下

  • 如果是在 Windows 里下载的压缩包,那么如何传递到自己的虚拟机中呢?
  • 此处我通过 Xftp 软件,将虚拟机与本地主机连接起来,实现文件拖拽快速传输
  • 首先新建连接,输入我们虚拟机的 ip 【可以在终端中通过 ipconfig 查看】
  • 然后输入我们的登录账户和密码,就可以创建连接
  • 连接成功后可以直接把我们想要放到虚拟机中的文件发送过去
  • 先通过 cd xxx 指令进入到我们Redis压缩包所在的目录 【先要使用su -指令,然后输入管理员密码切换用户身份,以防后面操作权限不够】
  • 通过 mv redis-7.0.10.tar.gz /opt 指令将文件移动到 /opt 目录下
  • 然后通过tar -zxvf redis-7.0.10.tar.gzs 解压压缩包,解压成后通过 cd redis-7.0.10 指令进入该目录
  • 通过 make && make install 指令开始编译并进行默认路径安装 【默认路径为 /usr/local 相当于 Windows 中的 C:\ProgramFile】
  • 我们需要通过 mkdir /myredis 指令创建一个存放配置文件的文件夹
  • 然后通过cp redis.config /myredis/redis7.config 指令将我们 redis-7.0.10 目录下的配置文件拷贝过去
  • 接下来就是修改我们拷贝过来的配置文件:
  • 通过 cd /myredis 指令来到我们的配置类目录
  • 通过vim redis7.config 来编辑修改我们的 redis 配置文件
  • 进入配置文件后在键盘输入 :set nu 回车,可以显示行数
  • 键盘按 i 开启编辑模式
  • 来到 1036 行,将注释掉的 requirepass 取消注释,并指定我们的密码为 111111 【去掉#号】
  • 默认daemonize no 改为 daemonize yes 【大约在几十行】
  • 默认protected-mode yes 改为 protected-mode no 【大约在100多行】
  • 默认 bind 127.0.0.1 改为 直接注释掉(默认bind 127.0.0.1只能本机访问)或改成本机IP地址,否则影响远程IP连接 【大约在300多行】
  • 先按 Esc, 然后键盘输入 :wq 退出并保存修改
  • 输入 reboot 指令重启虚拟机,使配置生效
  • 接下来我们启动 Redis 服务:
  • /user/local/bin 目录下 使用redis-server /myredis/redis7.config 指令启动服务 【如果什么都没显示,说明启动成功】
  • 出现以下情况,那么就删除我们拷贝的配置文件,重新拷贝并配置
  • 连接我们的 Redis 客户端:
  • 通过 redis-cli -a 111111 连接我们的客户端
  • 关闭 Redis 的方式:
  • 单实例关闭:redis-cli -a 111111 shutdown
  • 指定端口多实例关闭:redis-cli -p 6379 shutdown
  • 卸载 Redis 的方式:
  • 先停止 Redis 的服务
  • 然后删除/usr/local/lib 目录下 Redis 的相关文件
  • 补充知识点:
  • 安装完Redis后,我们可以来到 /usr/local/bin 目录下查看具体安装了什么?