相关链接
- CSDN_GroupiesM 笔记整理
- redis官网
- redis中文网
目录
一、Redis概述
Redis是什么
Redis: (Remote Dictionary Server),即远程字典服务。是一个开源的使用ANSI C语言编写、支持网络,可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
免费和开源,是当下最热门的NoSQL技术之一,也被人们称为结构化数据库。
Redis能干嘛
1、内存存储、持久化,内存中是断电即丢失的,所以说持久化很重要( rbd、aof )
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(文章浏览量)
Redis特性
1、多样的数据类型
2、支持持久化
3、支持集群
4、支持事务
链接
1、redis官网:https://redis.io
2、redis中文网:http://www.redis.cn
3、下载地址:通过官网下载即可
二、Redis安装
2.1 Windows安装
Step1: 下载安装包: https://github.com/dmajkic/redis
Step2: 下载完毕得到压缩包:
Step3: 解压到自己电脑上的环境目录下,Redis十分小,只有5M
Step4: 开启Redis,双击运行服务端(redis-server.exe)即可(默认 port : 6379)
Step5: 使用Redis客户端(redis-cli.exe)来连接 Redis(保持服务端开启)
注意:Winodows下使用确实简单,但是 Redis 推荐使用Linux环境开发使用 => http://www.redis.cn/topics/introduction
2.2 MacOS 安装
Step1: 下载安装包
redis官网 http://redis.io/download
redis中文网 http://www.redis.cn/download (中文网的redis版本会落后一些)
Step2: 下载完毕得到压缩包:
Step3: 解压到自己电脑上的环境目录下
Step4: 打开Terminal(Iterm),准备开始编译
Step5: 测试编译:在目录内输入sudo make test
,并暗文输入密码(锁屏密码),过程约5分钟
Step6: 编译安装:在目录内继续输入sudo make install
,再次输入密码(锁屏密码)
Step7: 进入src目录
Step8: Redis根目录下(我的是 /Users/d/develop/redis-6.2.6 )修改 配置文件 vim redis.conf
(修改前记得备份 cp redis.conf redis.conf-bak
Step9: 开启Redis,双击运行服务端(redis-server)即可(默认 port : 6379)
Step10: 使用Redis客户端(redis-cli)来连接 Redis(保持服务端开启)
Step11: 关闭Redis,双击运行客户端(redis-cli),输入shutdown
关闭服务端,quit
退出客户端
备注: 通过命令行查看redis运行情况 ps -ef | grep redis
2.3 Linux 安装
Step1: 下载安装包
redis官网 http://redis.io/download
redis中文网 http://www.redis.cn/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 | -k | 1=keep alive 0=reconnect | |
8 | -r | SET/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
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