ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis入门到精通01

2022-06-30 17:32:20  阅读:108  来源: 互联网

标签:01 入门 Redis make redis conf docker 安装


Redis入门到精通

目录

一、Redis缓存框架基本介绍

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

Redis的官网

市面上主流的Key-Value数据库有:Redis、Memcache、Tair(淘宝自研发)

1.1Redis的应用场景

  1. Token令牌的生成
  2. 短信验证码Code
  3. 缓存查询数据
  4. 网页计数器
  5. 分布式锁
  6. 延迟操作

二、Redis的安装方式

2.1Windows操作系统安装Redis

注意:Redis官方是没有windows版本的,只有linux,这时候因为 在nio中epoll只有linux操作系统独有

github下载windows版Redis

image-20220630160759668

下载完成后将redis文件进行解压,并在此文件夹内的空白处按shift+鼠标右键然后点击在此处打开Powershell窗口,执行 .\redis-server.exe .\redis.windows.conf命令启动redis。

运行结果如下图所示:

image-20220630155955085

此时redis就已经启动成功了,由于该方式启动为redis前台启动,所以powershell窗口不能关闭。

我们再在该文件下再打开一个powershell窗口用来查看redis是否正常运行

输入.\redis-cli.exe进入到redis中 set 1 test往redis中存入一个string类型的值,再get 1读取该值,显示如下则成功。

image-20220630160727990

至此我们就完成了windows版redis的安装。

2.2Linux操作系统安装Redis

本文章是基于CentOs7安装redis版本为redis-5.0.14

2.1、下载并解压

1、 执行下面命令进行redis下载

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

2、 解压redis

tar -zxvf redis-5.0.14.tar.gz

3、 移动redis目录,一般会将redis目录放在 /usr/local/redis目录

mv redis-5.0.14  /usr/local/redis

2.2、编译安装redis

1、 进入redis安装目录下并执行make命令编译redis

cd /usr/local/redis && make

若redis在执行make命令时报错:cc 未找到命令,原因是虚拟机系统中缺少gcc,执行下面命令安装gcc:

yum -y install gcc automake autoconf libtool make

若redis在执行make命令时报错:致命错误:jemalloc/jemalloc.h: 没有那个文件或目录,则需要在make指定分配器为libc。执行下面命令即可正常编译:

cd /usr/local/redis && make MALLOC=libc

make命令执行完,redis就编译完成了。

2、 执行下面命令安装redis,并指定安装目录

cd /usr/local/redis && make install PREFIX=/usr/local/redis

image-20220630162548512

至此我们就完成了Linux操作系统下redis的安装。

2.3、 启动Redis

1、 进入到redis的安装目录,并执行下面命令启动redis服务

cd /usr/local/redis
./bin/redis-server redis.conf

image-20220630162951789

此时,可以看到redis服务被成功启动。

但该方式启动有一个比较严重的问题,不能退出控制台,如果退出控制台,redis服务也会停止。若想redis以后台的方式运行,则需修改redis的配置文件redis.conf。将该配置文件中的 daemonize yes。修改完成后再次启动redis。

image-20220630163421768

启动结果如下图所示。

image-20220630163543535

验证redis是否可用可参考windows验证流程。

2.4、设置Redis账号密码

搜索:# requirepass foobared

requirepass 123456

客户端连接:auth 123456

2.5、设置Reids允许ip访问

注释掉bind 127.0.0.1或改为bind 0.0.0.0

protected-mode no ###允许外界访问

三、Docker容器化部署redis

docker容器安装请参考https://blog.csdn.net/qq_39142743/article/details/123483590中的docker安装部分内容。

3.1、创建数据和配置存放目录

# 创建 redis 配置存放目录
mkdir -p /docker/redis/conf && chmod 775 /docker/redis/conf

# 创建 redis 数据存放目录
mkdir -p /docker/redis/data && chmod 775 /docker/redis/data

3.2、 修改Redis配置文件

下载配置文件

# 进入 redis 配置文件目录
cd /docker/redis/conf

# 下载 redis 示例配置文件
wget http://download.redis.io/redis-stable/redis.conf

编辑配置文件修改如下内容:

# 设置 redis 连接密码
requirepass 123456

# 数据持久化
appendonly yes

# Redis key 过期事件监听
notify-keyspace-events Ex

3.3、 自定义启动redis

docker run -d -p 6379:6379 \
--name redis \
--restart=always \
-v /docker/redis/data:/data \
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /docker/redis/downloads:/usr/Downloads \
redis:5.0.14 \
redis-server /etc/redis/redis.conf \
--appendonly yes

redis 安装完成后通过docker ps命令查看状态如下

image-20220630165825376

3.4、验证redis是否安装成功

1、Redis交互终端

# 在容器 redis 中开启一个交互终端
docker exec -it redis /bin/bash

若get时,提示(error) NOAUTH Authentication required. 则需要输入密码auth 密码

image-20220630170220972

四、Redis单线线程模型

首先Redis官方是没有Windows版本的,只有Linux版本。

Redis的底层采用Nio中的多路IO复用的机制,能够非常好的支持这样的并发,从而保证线程安全问题;

Redis单线程,也就是底层采用一个线程维护多个不同的客户端io操作。

但是Nio在不同的操作系统上实现的方式有所不同,在我们windows操作系统使用select实现轮训时间复杂度是为o(n),而且还存在空轮训的情况,效率非常低, 其次是默认对我们轮训的数据有一定限制,所以支持上万的tcp连接是非常难。

所以在linux操作系统采用epoll实现事件驱动回调,不会存在空轮训的情况,只对活跃的 socket连接实现主动回调这样在性能上有大大的提升,所以时间复杂度是为o(1)

注意:windows操作系统是没有epoll,只有linux系统才有epoll

所以Nginx、redis都能够支持非常高的高并发,最终都是linux中的IO多路复用机制Epoll。

redis底层采用了nio epoll实现。

标签:01,入门,Redis,make,redis,conf,docker,安装
来源: https://www.cnblogs.com/plx666/p/16427776.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有