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、内存存储、持久化,内存中是断电即丢失的,所以说持久化很重要( rbd、aof )
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 | -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
Redis 4.0 版本提供了ASYNC 可选项,用于将该操作另启一个线程,可以起到异步释放的效果。=>
flushdb async
、flushAll 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
版权声明:本文标题:2.6_3 Reids概述 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729567109a1206625.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论