centos 7之Redis数据库详解及参数调优(内附搭建群集案例)

朱雀 2021-11-09 12:06 188阅读 0赞

博文目录:
一、关系型数据库与非关系型数据库的区别。
二、Redis数据库介绍。
三、Redis的安装部署。
四、Redis命令工具及常用命令
五、Redis群集配置实例。

一、关系型数据库与非关系型数据库的区别:

Redis数据库是一个非关系型数据库,和oracle、mysql、sql server等关系型数据库不是同一类型。NoSQL是非关系型数据库的总称,主流的NoSQL数据库有redis、MongBD等。NoSQL的存储方式、存储结构以及使用的场景都是完全不同的。NoSQL数据库凭借着其非关系型、分布式、开源和横向扩展等优势,被认为是下一代数据库产品。

NoSQL可以解决关系型数据库产生的三高问题:

  • 对数据库高并发读写需求。
  • 对海量数据高效存储与访问需求。
  • 对数据库高可扩展性与高可用性需求。

关系型数据库和非关系型数据库都有各自的特点与应用场景,两者精密结合将会给Web 2.0的数据库发展带来新的思路。让关系型数据库关注在关系上,非关系型数据库关注在存储上。

二、redis数据库介绍:

Redis是一个开源的、使用C语言编写、支持网络、可基于内存也可持久化的日志类型、key-value(键值对)数据库,是目前分布式架构中不可或缺的一环。

Redis服务器是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,而Redis的实际处理速度则完全依靠主进程的执行效率。若在服务器上只运行一个Redis进程,当多个client同时访问时,服务器的处理能力会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大的压力。也就是说,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高些,可能会考虑在同一台服务器上开启多个进程;若CPU资源比较紧张,采用单进程即可。

Redis具有以下几个有点:

  • 具有极高的读写速度,数据读取的速度最高可达到110000次/s,数据的写入速度最高可以达到81000次/s。
  • 支持丰富的数据类型,不仅仅支持简单的key-value数据类型,还支持strings、lists、hashes、sets及ordered sets等数据类型操作。
  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 原子性,Redis所有操作都是原子性的。
  • 支持数据备份,即master-salve模式的数据备份。

Redis是基于内存运行的数据库,缓存是它比较常应用的场景之一,除此之外,Redis常见应用场景还包括获取最新N个数据的操作、排行榜应用、计数器应用、存储关系、实时分析系统、日志记录等。

三、Redis的安装部署:

需先去Redis官网下载相应的源码包或从这个Redis下载链接 (提取码:z0da)直接下载。

  1. [root@redis ~]# tar zxf redis-5.0.5.tar.gz -C /usr/src/ #解包
  2. [root@redis ~]# cd /usr/src/redis-5.0.5/ #切换至解压出来的目录
  3. [root@redis redis-5.0.5]# make && make install #无需./configure配置,直接安装即可。
  4. [root@redis redis-5.0.5]# cd /usr/src/redis-5.0.5/utils/ #设置相关配置文件
  5. [root@redis utils]# ./install_server.sh #执行该脚本文件,相关配置文件就生成了。
  6. #接下来是在指定各种配置文件的存放目录,一路按回车确认即可。
  7. [root@redis utils]# cd /etc/init.d/ #优化控制服务启停
  8. [root@redis init.d]# mv redis_6379 redis
  9. [root@redis init.d]# chkconfig --add redis #添加为系统服务。
  10. [root@redis init.d]# systemctl restart redis
  11. [root@redis init.d]# systemctl restart redis
  12. [root@redis init.d]# systemctl restart redis
  13. [root@redis init.d]# netstat -anpt | grep redis #redis默认监听6379和群集端口16379
  14. tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 7098/redis-server 1
  15. #现在只是安装了redis,并没有配置群集,所以16379端口并没有监听。
  16. [root@redis init.d]# vim /etc/redis/6379.conf #查看redis配置文件
  17. bind 127.0.0.1 192.168.1.1 #监听的主机地址
  18. appendonly yes #改为“yes”,以便在每次更新操作后进行日志记录,进行数据同步写入
  19. port 6379 #监听端口
  20. daemonize yes #启用守护进程
  21. pidfile /var/run/redis_6379.pid #指定PID文件
  22. loglevel notice #日志级别
  23. logfile /var/log/redis_6379.log #指定日志文件

上面为部分配置参数,主配置中还有很多更多的配置参数,具体可参考如下:

centos  7之Redis数据库详解及参数调优(内附搭建群集案例)

四、Redis命令工具及常用命令:

Redis软件提供了很多命令工具,在安装Redis时,所包含的软件工具同时会被安装到系统中,在系统中可以直接使用,这些命令工具的作用如下所示:

  • redis-server:用于启动Redis的工具。
  • redis-benchmark:用于检测Redis在本机的运行效率。
  • redis-check-aof:修复AOF持久化文件。
  • redis-check-rdb:修复RDB持久化文件。
  • redis-cli:Redis命令行工具。

下面是 redis-cli和redis-benchmark工具的用法:

1、redis-cli命令行工具:

redis-cli命令可以连接指定的数据库,可以用“-h”指定远程主机;“-p指定服务的端口号”,若设置了密码,可以用“-a”指定密码,若没设置连接密码,则可以省略“-a”选项。如下:

  1. [root@redis redis]# redis-cli -h 192.168.1.1 -p 6379
  2. #若端口号默认监听6379,也可省略-p选项。
  3. 192.168.1.1:6379>

在数据库操作环境中,使用help命令可获取命令类型的帮助。其中,有三种获取命令帮助的方式。

  1. help @:获取中的命令列表。
  2. help :获取某个命令的帮助。
  3. help :获取可能帮助的主题列表。

示例如下:

  1. 192.168.1.1:6379> help @list #查看所有与list数据类型相关的命令
  2. BLPOP key [key ...] timeout
  3. summary: ck until one is available
  4. since: 2.0.0
  5. BRPOP key [key ...] timeout
  6. summary: block until one is available
  7. since: 2.0.0
  8. ...........................
  9. 192.168.1.1:6379> help set #查看set命令的命令帮助。
  10. SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
  11. summary: Set the string value of a key
  12. since: 1.0.0
  13. group: string

2、redis-benchmark压力测试工具:

redis-benchmark是官方自带的Redis性能测试工具,可以有效地测试Redis服务的性能。该工具的常用选项如下:

centos  7之Redis数据库详解及参数调优(内附搭建群集案例)

用法示例:

  1. [root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -c 100 -n 100000
  2. #向指定IP地址及端口的Redis服务器发送100个并发连接与100000个请求测试性能。
  3. .........................
  4. ====== MSET (10 keys) ======
  5. 100000 requests completed in 1.74 seconds
  6. 100 parallel clients
  7. 3 bytes payload
  8. keep alive: 1
  9. 23.94% <= 1 milliseconds
  10. 98.02% <= 2 milliseconds
  11. 99.64% <= 3 milliseconds
  12. 99.76% <= 4 milliseconds
  13. 99.82% <= 5 milliseconds
  14. 99.89% <= 6 milliseconds
  15. 99.90% <= 7 milliseconds
  16. 99.94% <= 8 milliseconds
  17. 99.97% <= 9 milliseconds
  18. 100.00% <= 10 milliseconds
  19. 100.00% <= 10 milliseconds
  20. 57603.69 requests per second
  21. #测试结果,milliseconds为毫秒,时间越短,性能越好。
  22. [root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -q -d 100
  23. #测试向指定Redis服务器的指定端口6379存取大小为100B的数据包的性能。
  24. [root@redis redis]# redis-benchmark -t set,lpush -n 100000 -q
  25. #测试本机上Redis服务在进行set与lpush操作时的性能。
  26. SET: 67659.00 requests per second
  27. LPUSH: 64516.13 requests per second

Redis数据库常用命令:

Redis数据库采用key-value(键值对)的数据存储形式,所使用的命令是set和get。

  • set:存放数据,命令格式为set key value。
  • get:获取数据,命令格式为get key。

    [root@localhost ~]# redis-cli #连接本地数据库
    127.0.0.1:6379 > set yuangong zhangsan #插入数据
    OK
    127.0.0.1:6379> get yuangong #查询键值
    “zhangsan”
    127.0.0.1:6379> keys y #查询以“y”开头的数据
    1) “yuangong”
    127.0.0.1:6379> keys y? #查询以“y”开头后面包含一个任意一位的数据
    (empty list or set) #没有查到,代表没有符合条件的数据
    127.0.0.1:6379> keys y?? #查询以“y”开头后面包含一个任意两位的数据
    (empty list or set)
    127.0.0.1:6379> exists yuangong #判断“yuangong”键是否存在
    (integer) 1 #表示yuangong键存在
    127.0.0.1:6379> exists yu #判断“yu”键是否存在
    (integer) 0
    127.0.0.1:6379> keys
    #查询当前库中所有键
    1) “counter:rand_int
    2) “mylist”
    3) “key:rand_int
    4) “yuangong”
    5) “myset:rand_int
    127.0.0.1:6379> del yuangong #删除yuangong键
    (integer) 1
    127.0.0.1:6379> set lv 23
    OK
    127.0.0.1:6379> type lv #获取键“lv”对应的value值类型
    string

rename命令可以对已有的key进行重命名,还有一个重命名的命令为renamenx。两者区别是前者更改的目标key值不管存在与否,都将进行更改,直接覆盖目标key值的数据;后者renamenx命令是在更改时,会检查目标键值是否存在,若存在,将放弃更改。

  1. 127.0.0.1:6379> get lvjian
  2. "23"
  3. 127.0.0.1:6379> set liuyi 30 #插入一条数据
  4. OK
  5. 127.0.0.1:6379> renamenx lvjian liuyi #将“lvjian”更改为“liuyi”
  6. (integer) 0 #“liuyi”存在,放弃更改
  7. 127.0.0.1:6379> rename lvjian liuyi #使用rename命令进行更改
  8. OK
  9. 127.0.0.1:6379> get liuyi #直接覆盖目标数据
  10. "23"
  11. 127.0.0.1:6379> dbsize #查看当前数据库中key的数目
  12. (integer) 5

多数据库常用的命令

Redis支持多数据库,Redis在没有任何改动的情况下默认包含16个数据库,数据库名使用数字0—15来依次命名。每个库中的数据是独立的,也就是说在10库中查不到0库中的数据。

  1. 127.0.0.1:6379> select 10 #切换至编号10的库
  2. OK
  3. 127.0.0.1:6379[10]> select 15 #切换至编号15的库
  4. OK
  5. 127.0.0.1:6379[15]> select 0 #切换至编号0的库
  6. OK
  7. 127.0.0.1:6379> move liuyi 10 #将该库中的数据移动到10库中
  8. (integer) 1
  9. 127.0.0.1:6379> select 10 #切换至编号10的库
  10. OK
  11. 127.0.0.1:6379[10]> get liuyi #查看移动过来的库
  12. "23"
  13. #现在0库中已经查不到“liuyi”的数据了

清除数据库内数据:

Redis数据库的整库数据删除主要分为两个部分:清空当前数据库中的数据,使用flushdb命令实现;清空所有库中的数据,使用flushall命令。数据库清空操作比较危险,生产环境下慎用!!!

五、Redis群集配置实例:

基于centos 7的Redis群集原理及配置

发表评论

表情:
评论列表 (有 0 条评论,188人围观)

还没有评论,来说两句吧...

相关阅读

    相关 centos7 redis

    简单说明: 我们的集群结构: 我们的集群有三个主节点,每个主节点有一个从节点,一共有6个节点。都是在一台机器上创建多个redis实例来实现的。 1.集群环境的安装 1.

    相关 CentOS7redis

    客户是个关系户...  开设好centos7虚拟机的同时还得搭建好redis集群。安装过程很顺利,没有遇到什么坑。 环境介绍:两台centos7系统+redis 4.0.11