admin管理员组

文章数量:1651842

相关链接

  • Excel目录
  • redis官网
  • redis中文网

目录

  • 一、Redis概述
  • 二、Redis安装
    • 2.1 Windows安装
    • 2.2 MacOS 安装
    • 2.3 Linux 安装
  • 三、性能测试(redis-benchmark)
  • 四、基础知识


一、Redis概述

Redis是什么

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

  免费和开源,是当下最热门的NoSQL技术之一,也被人们称为结构化数据库。


Redis能干嘛

  1、内存存储、持久化,内存中是断电即丢失的,所以说持久化很重要( rbdaof )
  2、效率高,可以用于高速缓存
  3、发布订阅系统
  4、地图信息分析
  5、计时器、计数器(文章浏览量)
  6、在javaweb中的作用:使用redis,最主要的功能就是它的缓存,就如计算机的高速缓存,当我们要访问某些数据时,先去redis中找,看其是否存在,若不存在,则再访问数据库,同时将数据存入redis,下次访问的时候就可以直接从redis中读取,在一个小项目中,你可能感觉不到性能的提升,但是若同时有几十万,上百万的访问量时,其对性能的提升是飞跃的,极大地减小了数据库的压力,但每次数据库中的数据改变时,必须改变redis缓存中的数据,否则将会出现不同步的错误。
  7、其他见文档 => Redis中文文档


Redis特性

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


链接

1、redis官网:https://redis.io
2、redis中文网:http://www.redis
3、下载地址:通过官网下载即可

注意:Windows版本在Github上下载 https://github/dmajkic/redis ,停更很久了
Redis推荐在Linux服务器搭建


二、Redis安装


2.1 Windows安装

Step1: 下载安装包: https://github/dmajkic/redis
Step2: 下载完毕得到压缩包:

Step3: 解压到自己电脑上的环境目录下,Redis十分小,只有5M

相关工具:
redis-benchmark.exe 测试性能
redis-check-aof.exe 检查aof持久化文件是否正确
redis-cli.exe      启动客户端
redis-server.exe     启动服务

Step4: 开启Redis,双击运行服务端(redis-server.exe)即可(默认 port : 6379)

Step5: 使用Redis客户端(redis-cli.exe)来连接 Redis(保持服务端开启)

注意:Winodows下使用确实简单,但是 Redis 推荐使用Linux环境开发使用 => http://www.redis/topics/introduction

2.2 MacOS 安装


Step1: 下载安装包
  redis官网 http://redis.io/download
  redis中文网 http://www.redis/download (中文网的redis版本会落后一些)

Step2: 下载完毕得到压缩包:

Step3: 解压到自己电脑上的环境目录下

Step4: 打开Terminal(Iterm),准备开始编译

Step5: 测试编译:在目录内输入sudo make test,并暗文输入密码(锁屏密码),过程约5分钟


编译完成

Step6: 编译安装:在目录内继续输入sudo make install,再次输入密码(锁屏密码)


过程很短,约1秒

Step7: 进入src目录

相关工具:
redis-benchmark 测试性能
redis-check-aof 检查aof持久化文件是否正确
redis-check-rdb检查rdb持久化文件是否正确
redis-cli      启动客户端
redis-server     启动服务
redis-setinel    【哨兵模式】一个自动地监控处理 redis 间故障节点转移工作的一个「东西」,准确来说,Sentinel 其实是一个 redis 服务端程序,只不过运行在特殊的模式下,不提供数据存储服务,只进行普通 redis 节点监控管理。

Step8: Redis根目录下(我的是 /Users/d/develop/redis-6.2.6 )修改 配置文件 vim redis.conf (修改前记得备份 cp redis.conf redis.conf-bak


可以通过:/xxx来搜索内容

参数1:daemonize
  no:(默认)当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
  yes:redis会在后台运行,此时redis将一直运行,除非手动kill该进程。同时将进程pid号写入至redis.conf选项pidfile设置的文件中,默认会生成在/var/run/redis.pid,也可以通过pidfile来指定pid文件生成的位置

参数2:logfile
指定目录: redis.log

Step9: 开启Redis,双击运行服务端(redis-server)即可(默认 port : 6379)

Step10: 使用Redis客户端(redis-cli)来连接 Redis(保持服务端开启)

redis-cli -p 6379 (redis默认端口号就是6379,后面参数-p 6379可以省略不写)

Step11: 关闭Redis,双击运行客户端(redis-cli),输入shutdown 关闭服务端,quit 退出客户端

默认 NOSAVE ,不持久化到本地,当前内存中数据丢失
手动 shutdown save ,下次启动redis时再将数据从本地磁盘加载到内存中

备注: 通过命令行查看redis运行情况 ps -ef | grep redis

2.3 Linux 安装


Step1: 下载安装包
  redis官网 http://redis.io/download
  redis中文网 http://www.redis/download (中文网的redis版本会落后一些)

Step2: 下载完毕得到压缩包:

Step3: 上传至linux服务器自己的安装目录

没图

Step4: 解压文件: tar -zxvf redis-6.2.6.tar.gz

没图

Step5: 进入解压后的文件,可以看到redis的配置文件 ls

没图

Step6: 基本环境安装,由于redis是c++写的,此步骤用于安装c++环境(macOS自带gcc所以可以直接编译安装)

# 安装gcc
yum install gcc-c++
# 编译:按照makefile脚本对整个项目的各个文件进行分别编译的链接
make
# 安装:从Makefile中读取指令,安装到指定的位置。(需要root权限,往系统写入文件)
make install

Step7: redis的默认安装路径 /usr/local/bin

Step8: 参考MacOS安装方式,修改配置文件(Step8),启动服务端(Step9),启动客户端(Step10)

Step9: 后面会使用单机多Redis启动集群测试


三、性能测试(redis-benchmark)


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

使用方式: redis-benchmark 命令参数

序号选项描述默认值
1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器 socket
4-c指定并发连接数5
5-n指定请求书10000
6-d以字节的形式指定 SET/GET 值的数据大小3
7-k1=keep alive 0=reconnect
8-rSET/GET/INCR 使用随机 key,SADD 使用随机值
9-P通过管道传输 <numreq>请求1
10-q强制退出 redis,仅显示 query/sec 值
11–csv以 CSV 格式输出
12-l (L的小写字母)生成循环,永久执行
13-t仅以逗号分割的测试命令列表
14-i (i的大写字母)Idle模式。金打开 N 个 idle 连接并等待

简单测试一下(先开启服务端 redis-server)

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

查看分析: 对各种方法 GET、SET、INCR 分别进行性能测试


四、基础知识

Reids默认有16个数据库

默认是用的是0个,可以使用 select 数字 切换数据库,dbsize 查看db大小

keys * 查看当前数据库所有的key

flushdb:清空当前数据库 flushAll:清空所有数据的key

Redis 4.0 版本提供了ASYNC 可选项,用于将该操作另启一个线程,可以起到异步释放的效果。=> flushdb asyncflushAll async

  Redis3.0 中已经逐渐弱化这个功能,例如 Redis 的分布式实现 Redis Cluster 只允许使用0号数据库,只不过为了向下兼容老版本的数据库功能,该功能没有完全废弃掉。关于废弃掉多数据库功能的原因:
  1、Redis是单线程的。如果使用多个数据库,那么这些数据库仍然是使用一个 CPU ,彼此之间还是会受到影响的。
  2、多数据库的使用方式,会让调试和运维不同业务的数据库变的困难,假如有一个慢查询存在,依然会影响其他数据库,这样会使得别的业务方定位问题非常的困难。
  3、部分Redis的客户端不支持这种方式。即使支持,在开发的时候来回切换数字形式的数据库,很容易弄乱。

  建议如果要使用多个数据库功能,完全可以在一台机器上部署多个 Redis 实例,彼此用端口来做区分,因为现代计算机或者服务器通常是有多个 CPU 的。这样既保证了业务之间不会受到影响,又合理地使用了 CPU 资源。


Reids是单线程的

  Redis是基于内存操作,CPU不是Redis性能瓶颈。Redis的瓶颈是根据机器的内存和网络带宽,可以使用单线程来实现。

Redis 为什么单线程还这么快?
误区1:高性能的服务器一定是多线程的
误区2:多线程一定比单线程效率高

速度: CPU>内存>硬盘
核心: Redis 是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作),对于内存系统来说,如果没有上下文切换效率就是最高的。多次读写都是在一个CPU上,在使用内存的情况下,单线程就是最佳方案。


22/02/21

M

本文标签: Reids