前言
本文从NoSQL诞生的由来引出Redis数据库,并对其简单介绍,然后进行Redis手工编译安装的流程演示(实验Linux环境的系统版本为:CentOS 7),最后介绍Redis常用的命令工具。
什么是NoSQL?
NoSQL——non-relational SQL,非关系型数据库。非关系型数据库的存储方式、存储结构以及使用场景都是完全不同的。随着网络发展,关系型数据库在应对海量数据以及高并发的网络服务时遇到相关的问题:
1)无法满足对数据库的高并发读写需求
2)无法满足对海量数据高效存储与访问
3)无法满足数据库的高可用与高扩展性
下图给出关系型数据库与非关系型数据库的思维导图,以便参考:
Redis简介
Redis(RemoteDictionaryServer, 远程字典型)是一个开源的、使用 C 语言编写的 NoSQL数据库。 Redis 基于内存运行并支持持久化, 采用 key-value(键值对) 的存储形式, 是目前分布式架构中不可或缺的一环。
其优点与使用场景:
●具有极高的数据读写速度, 数据读取的速度最高可达到 110000 次/s, 数据写入速度最高可达到 81000 次/s; ●支持丰富的数据类型, 不仅仅支持简单的 key-value 类型的数据, 还支持 Strings,Lists, Hashes, Sets 及 Ordered Sets 等数据类型操作; ●支持数据的持久化, 可以将内存中的数据保存在磁盘中, 重启的时候可以再次加载进行使用; ●原子性, Redis 所有操作都是原子性的; ●支持数据备份, 即 master-salve 模式的数据备份;
Redis 作为基于内存运行的数据库, 缓存是其最常应用的场景之一, 除此之外, Redis常见应用场景还包括: 获取最新 N 个数据操作、 排行榜类应用、 计数器应用、 存储关系、实时分析系统、 日志记录等。
Redis手工编译安装
1、获取安装包资源解压以及安装编译工具
代码语言:javascript复制[root@localhost ~]# hostnamectl set-hostname redis_install_install
[root@localhost ~]# su
[root@redis_install ~]# yum install gcc gcc-c make -y
[root@redis_install ~]# ls #redis_install安装包
anaconda-ks.cfg initial-setup-ks.cfg redis_install-5.0.7.tar.gz
Desktop Music Templates
Documents Pictures Videos
Downloads Public
[root@redis_install ~]# tar zxvf redis_install-5.0.7.tar.gz -C /opt #redis_install源码包可以直接到官网下载
2、编译安装
代码语言:javascript复制[root@redis_install redis-5.0.7]# make #直接进行make
[root@redis_install redis-5.0.7]# make PREFIX=/usr/local/redis_install/ install #指定redis_install目录并安装,安装过程中,更改安装路径可以用make PRRFIX=安装路径 install
[root@redis_install redis-5.0.7]# cd /usr/local/redis_install/
[root@redis_install redis_install]# ls
bin
[root@redis_install redis_install]# cd bin/
[root@redis_install bin]# ls #redis_install的相关命令工具
redis-benchmark redis-check-rdb redis-sentinel
redis-check-aof redis-cli redis-server#redis-cli是连接终端
[root@redis_install bin]# cd /opt/redis-5.0.7/utils/ #回到redis_install源码包解压目录
[root@redis_install utils]# ./install_server.sh #执行脚本进行配置:端口、配置文件目录、日志文件目录等
Welcome to the redis service installer
This script will help you easily set up a running redis_install server
Please select the redis port for this instance: [6379] #选择redis_install默认端口,直接回车
Selecting default: 6379
Please select the redis config file name [/etc/redis_install/6379.conf] #选择redis_install默认配置文件名称,直接回车
Selected default - /etc/redis/6379.conf
Please select the redis_install log file name [/var/log/redisl_6379.log] #选择默认redis日志文件名称,直接回车
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redi/6379] #选择默认接口的默认数据文件,直接回车
Selected default - /var/lib/redis/6379
Please select the redis_install executable path [] /usr/local/redis_install/bin/redis_install-server #选择redis_install可执行文件路径,需要手动输入此路径:/usr/local/redis_install/bin/redis_install-server
Selected config: #查看配置清单
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort. 确认无误后直接回车完成配置
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting redis server...
Installation successful!
3、优化配置与登录
代码语言:javascript复制[root@redis_install utils]# ln -s /usr/local/redis_install/bin/* /usr/local/bin #将redis命令创建软连接,便于系统识别
[root@redis_install utils]# netstat -ntap |grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 26085/redis_install-server
[root@redis_install utils]# vim /etc/redis/6379.conf #修改配置文件
bind 127.0.0.1 20.0.0.133 #添加本机ip作为监听对象
[root@redis_install utils]# /etc/init.d/redis_6379 restart #重启redis服务
Stopping ...
redis stopped
Starting redi server...
[root@redis_install utils]# redis-cli -h 20.0.0.133 -p 6379 #成功登陆
20.0.0.133:6379> exit #退出
[root@redis_install utils]#
redis常用命令工具
安装过程中已经查看了bin目录下的命令工具了,本文主要介绍redis-cli、redis-benchmark两个工具。
redis-cli
redis-cli是redis自带的命令行工具,使用 redis-cli 连接指定数据库, 连接成功过后会进入提示符为“ IP 地址: 端口号>” 的数据库操作环境。进入数据库后用户可以输入各种操作语句对数据库进行管理。,如执行ping 命令可以检测 redis 服务是否启动。若要退出数据库操作环境, 执行“exit” 或“quit” 命令即可返还原来的 Shell 环境。
代码语言:javascript复制[root@redis_install ~]# redis-cli
127.0.0.1:6379> ping
PONG
在进行数据库连接操作时, 可以通过选项来指定远程主机上的 Redis 数据库, 命令语法 为:
代码语言:javascript复制redis-cli -h host -p port -a password
代码语言:javascript复制其中, -h 指定远程主机、 -p 指定 Redis 服务的端口号、 -a 指定密码。 若不添加任何选项表示, 连接本机上的 Redis 数据库; 若未设置数据库密码可以省略-a 选项。 例如执行以下命令可连接到主机为 20.0.0.133, 端口为 6379 的 Redis 数据库, 并查看 redis 服务的统计信息。
代码语言:javascript复制[root@redis_install ~]# redis-cli -h 20.0.0.133 -p 6379
20.0.0.133:6379> info #info后面可以接参数,如:memory等
# Server
redis_version:5.0.7 #redis版本
......#省略后续内容
代码语言:javascript复制在数据库操作环境中, 使用 help 命令可以获取命令类型的帮助。 其中。 有三种获取命
令帮助的方式。
help @<group>: 获取<group>中的命令列表
help <command>: 获取某个命令的帮助
help <tab>: 获取可能帮助的主题列表
redis-benchmark
redis-benchmark是官方自带的用于redis的性能测试工具,可以有效的测试redis服务的性能。基本语法为:
代码语言:javascript复制redis-benchmark [option] [option value]
option:
-h: 指定服务器主机名。
-p: 指定服务器端口。
-s: 指定服务器 socket。
-c: 指定并发连接数。
-n: 指定请求数。
-d: 以字节的形式指定 SET/GET 值的数据大小。
-k: 1=keep alive 0=reconnect 。
-r: SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P: 通过管道传输<numreq>请求。
-q: 强制退出 redis。 仅显示 query/sec 值。
--csv: 以 CSV 格式输出。
-l: 生成循环, 永久执行测试。
-t: 仅运行以逗号分隔的测试命令列表。
-I: Idle 模式。 仅打开 N 个 idle 连接并等待。
实例演示:
代码语言:javascript复制[root@redis_install ~]# redis-benchmark -h 20.0.0.133 -p 6379 -c 100 -n 100000
#耐心等待
...... #测试过程
====== MSET (10 keys) ======
100000 requests completed in 1.10 seconds
100 parallel clients
3 bytes payload
keep alive: 1
83.30% <= 1 milliseconds #milliseconds——毫秒
99.76% <= 2 milliseconds
100.00% <= 2 milliseconds
90991.81 requests per second #每秒并发连接数为90991.81(参考,没有实际生产环境价值)
总结
redis数据库的手工编译安装相较于MySQL比较简单,其常用的工具还是需要掌握的。