Redis入门到精通01
Redis入门到精通
一、Redis缓存框架基本介绍
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
市面上主流的Key-Value数据库有:Redis、Memcache、Tair(淘宝自研发)
1.1Redis的应用场景
- Token令牌的生成
- 短信验证码Code
- 缓存查询数据
- 网页计数器
- 分布式锁
- 延迟操作
二、Redis的安装方式
2.1Windows操作系统安装Redis
注意:Redis官方是没有windows版本的,只有linux,这时候因为 在nio中epoll只有linux操作系统独有
下载完成后将redis文件进行解压,并在此文件夹内的空白处按shift+鼠标右键
然后点击在此处打开Powershell窗口,执行 .\redis-server.exe .\redis.windows.conf
命令启动redis。
运行结果如下图所示:
此时redis就已经启动成功了,由于该方式启动为redis前台启动,所以powershell窗口不能关闭。
我们再在该文件下再打开一个powershell窗口用来查看redis是否正常运行
输入.\redis-cli.exe
进入到redis中 set 1 test
往redis中存入一个string类型的值,再get 1
读取该值,显示如下则成功。
至此我们就完成了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
至此我们就完成了Linux操作系统下redis的安装。
2.3、 启动Redis
1、 进入到redis的安装目录,并执行下面命令启动redis服务
cd /usr/local/redis
./bin/redis-server redis.conf
此时,可以看到redis服务被成功启动。
但该方式启动有一个比较严重的问题,不能退出控制台,如果退出控制台,redis服务也会停止。若想redis以后台的方式运行,则需修改redis的配置文件redis.conf
。将该配置文件中的 daemonize yes
。修改完成后再次启动redis。
启动结果如下图所示。
验证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
命令查看状态如下
3.4、验证redis是否安装成功
1、Redis交互终端
# 在容器 redis 中开启一个交互终端
docker exec -it redis /bin/bash
若get时,提示(error) NOAUTH Authentication required. 则需要输入密码auth 密码
四、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实现。
Redis入门到精通01的更多相关文章
- SCRM从入门到精通01
[SCRM从入门到精通01]如何基于微信开放接口开发企业的微信CRM? 业内一直都在传说微信是天生的CRM,可是没有人看到过微信CRM的真容.随着微信最新公众平台的改版和开放接口的微信认证开放,微信C ...
- redis入门到精通系列(四):Jedis--使用java操作redis详解
(一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...
- redis入门到精通系列(二):redis操作的两个实践案例
在前面一篇博客中我们已经学完了redis的五种数据类型操作,回顾一下,五种操作类型分别为:字符串类型(string).列表类型(list).散列类型(hash).集合类型(set).有序集合类型(so ...
- redis入门到精通系列(三):key的通用操作和redis内部db的通用操作
五种数据类型都用到了key,key本身是一种字符串,通过key可以获取redis中保存的对象.这一篇博客就将介绍key的通用操作. (一)key基本操作 删除key del key key是否存在 e ...
- redis入门到精通系列(一)
(一)为什么要用Nosql 如果你是计算机本科学生 ,那么一定使用过关系型数据库mysql.在请求量小的情况下,使用mysql不会有任何问题,但是一旦同时有成千上万个请求同时来访问系统时,就会出现卡顿 ...
- redis入门到精通系列(九):redis哨兵模式详解
(一)哨兵概述 前面我们讲了redis的主从复制,为了实现高可用,会选择一台服务器作为master,多台服务器作为slave.现在有这样一种情况,master宕机了,这时系统会选择一台slave作为m ...
- redis入门到精通系列(八):redis的高可用--主从复制详解
(一)主从复制介绍 前面所讲的关于redis的操作都属于单机操作,单机操作虽然操作简单,但是处理能力有限,无法高可用.所谓高可用性,就是指当一台服务器宕机的时候,有备用的服务器能顶替上,在单机操作上这 ...
- redis入门到精通系列(七):redis高级数据类型详解(BitMaps,HyperLogLog,GEO)
高级数据类型和五种基本数据类型不同,并非新的数据结构.高级数据类型往往是用来解决一些业务场景. (一)BitMaps (1.1) BitMaps概述 在应用场景中,有一些数据只有两个属性,比如是否是学 ...
- redis入门到精通系列(六):redis的事务详解
(一)事务的概念 谈到数据库的高级应用,不可避免会谈到事务.熟悉mysql的朋友们对事务肯定不陌生,简单来讲事务就是控制一个数据库操作序列要么全部执行要么全部不执行.今天我们就来了解redis中的事务 ...
随机推荐
- Docker安装Opensips2.4实现内网sip电话通讯
使用说明 这是基于官方opensips 2.4镜像添加了mysql模块以及rest_client模块制作的镜像,用此镜像可以连接mysql控制opensip注册用户.查看通话记录以及通话时对INVIT ...
- ArcGIS使用技巧(七)——批量导出
新手,若有错误还请指正! 在ArcGIS中如何将栅格数据批量导出?用到"复制栅格这个工具",这里我用的例子是:将ArcGIS默认输出的DEM文件夹批量导出为tif格式.(如果是文件 ...
- Mysql、Oracle锁表处理
MySql解锁方式 1 # 1. 查看当前数据库锁表的情况 2 SELECT * FROM information_schema.INNODB_TRX; 3 # 2. 杀掉查询结果中锁表的trx_my ...
- RecyclerView + SQLite 简易备忘录-----中(2)
(3)RecyclerView的实现 ---中间的内容 RecyclerView是一个比ListView更加强大的滚动控件.要使用这个控件需要先在项目的build.gradle中添加RecyclerV ...
- django orm 更新数据时间不自动更新问题
gmt_create自动添加auto_now_add:gmt_modify自动更新auto_now class CommonInfo(models.Model): """ ...
- 观察者模式与Google Guava EventBus实现
概述 观察者模式又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种. 它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态变化时,会 ...
- 攻防世界-MISC:stegano
这是攻防世界新手练习区的第五题,题目如下: 点击附件1下载,得到一个pdf文件,打开后内容如下: 把pdf文件里的内容复制到记事本上,发现一串A和B的字符串,不知道是什么(真让人头大) 参考一下WP, ...
- 如何对用户的绑定的身份证真实性进行实名认证(java)
现在随着对用户实名制的要求,因此用户提交的身份证信息经查需要检查是否为真实信息,我们需要对用户提交的身份证信息进行核验,具体操作步骤如下: 第一步 到认证平台注册账号:云亿互通--实名认证服务 (yu ...
- Kubernetes 从入门到进阶实战教程 (2021 最新万字干货版)
作者:oonamao 毛江云,腾讯 CSIG 应用开发工程师原文:来源腾讯技术工程,https://tinyurl.com/ya3ennxf 写在前面 笔者今年 9 月从端侧开发转到后台开发,第一个系 ...
- Redis源码漂流记(二)-搭建Redis调试环境
Redis源码漂流记(二)-搭建Redis调试环境 一.目标 搭建Redis调试环境 简要理解Redis命令运转流程 二.前提 1.有一些c知识简单基础(变量命名.常用数据类型.指针等) 可以参考这篇 ...