Redis 群集配置实例:
1、关系型数据库与非关系型数据库的区别:mysql
Redis数据库是一个非关系型数据库,和oracle、mysql、sql server等关系型数据库不是同一类型。NoSQL是非关系型数据库的总称,主流的NoSQL数据库有redis、MongBD等。NoSQL的存储方式、存储结构以及使用的场景都是彻底不一样的。NoSQL数据库凭借着其非关系型、分布式、开源和横向扩展等优点,被认为是下一代数据库产品。redis
NoSQL能够解决关系型数据库产生的三高问题:sql
关系型数据库和非关系型数据库都有各自的特色与应用场景,二者精密结合将会给Web 2.0的数据库发展带来新的思路。让关系型数据库关注在关系上,非关系型数据库关注在存储上。
.
2、redis数据库介绍:数据库
Redis是一个开源的、使用C语言编写、支持网络、可基于内存也可持久化的日志类型、key-value(键值对)数据库,是目前分布式架构中不可或缺的一环。vim
Redis服务器是单进程模型,也就是在一台服务器上能够同时启动多个Redis进程,而Redis的实际处理速度则彻底依靠主进程的执行效率。若在服务器上只运行一个Redis进程,当多个client同时访问时,服务器的处理能力会有必定程度的降低;若在同一台服务器上开启多个Redis进程,Redis在提升并发处理能力的同时会给服务器的CPU形成很大的压力。也就是说,在实际生产环境中,须要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高些,可能会考虑在同一台服务器上开启多个进程;若CPU资源比较紧张,采用单进程便可。缓存
Redis具备如下几个有点:服务器
.
Redis是基于内存运行的数据库,缓存是它比较常应用的场景之一,除此以外,Redis常见应用场景还包括获取最新N个数据的操做、排行榜应用、计数器应用、存储关系、实时分析系统、日志记录等。
.
3、Redis的安装部署:网络
能够先去Redis官网下载相应的源码包或从这:https://pan.baidu.com/s/1rGl8OwfYuYAB-aEXcZ7wRw (提取码: zg3w )直接下载。架构
[root@redis ~]# tar zxf redis-5.0.5.tar.gz -C /usr/src/ #解包 [root@redis ~]# cd /usr/src/redis-5.0.5/ #切换至解压出来的目录 [root@redis redis-5.0.5]# make && make install #不须要./configure进行环境检查与配置,直接make安装便可。 [root@redis redis-5.0.5]# cd /usr/src/redis-5.0.5/utils/ #设置相关配置文件 [root@redis utils]# ./install_server.sh #执行该脚本,相关配置文件就生成了。 #接下来是在指定各类配置文件的存放目录,一路按回车确认便可。 [root@redis utils]# cd /etc/init.d/ #优化控制服务启停 [root@redis init.d]# mv redis_6379 redis [root@redis init.d]# chkconfig --add redis #添加为系统服务。 [root@redis init.d]# systemctl restart redis [root@redis init.d]# netstat -anpt | grep redis # redis默认监听6379和群集端口16379 tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 7098/redis-server 1 #如今只是安装了redis,并无配置群集,因此16379端口并无监听。 [root@redis init.d]# vim /etc/redis/6379.conf #查看redis配置文件 bind 127.0.0.1 192.168.1.1 #监听的主机地址 appendonly yes #改成“yes”,以便在每次更新操做后进行日志记录,进行数据同步写入 port 6379 #监听端口 daemonize yes #启用守护进程 pidfile /var/run/redis_6379.pid #指定PID文件 loglevel notice #日志级别 logfile /var/log/redis_6379.log #指定日志文件
上面为部分配置参数,主配置中还有不少更多的配置参数,具体可参考以下:
4、Redis命令工具及经常使用命令:并发
Redis软件提供了不少命令工具,在安装Redis时,所包含的软件工具同时会被安装到系统中,在系统中能够直接使用,这些命令工具的做用以下所示:
.
下面是 redis-cli和redis-benchmark工具的用法:
一、redis-cli命令行工具:
.
redis-cli命令能够链接指定的数据库,能够用“-h”指定远程主机;“-p指定服务的端口号”,若设置了密码,能够用“-a”指定密码,若没设置链接密码,则能够省略“-a”选项。以下:
[root@redis redis]# redis-cli -h 192.168.1.1 -p 6379 #若端口号默认监听6379,也可省略-p选项。 192.168.1.1:6379> 在数据库操做环境中,使用help命令可获取命令类型的帮助。其中,有三种获取命令帮助的方式。 help @<group>:获取<group>中的命令列表。 help <command>:获取某个命令的帮助。 help <tab> :获取可能帮助的主题列表。 示例以下: 192.168.1.1:6379> help @list #查看全部与list数据类型相关的命令 BLPOP key [key ...] timeout summary: ck until one is available since: 2.0.0 BRPOP key [key ...] timeout summary: block until one is available since: 2.0.0 ........................... 192.168.1.1:6379> help set #查看set命令的命令帮助。 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string
二、redis-benchmark压力测试工具:
.
redis-benchmark是官方自带的Redis性能测试工具,能够有效地测试Redis服务的性能。该工具的经常使用选项以下:
[root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -c 100 -n 100000 #向指定IP地址及端口的Redis服务器发送100个并发链接与100000个请求测试性能。 ......................... ====== MSET (10 keys) ====== 100000 requests completed in 1.74 seconds 100 parallel clients 3 bytes payload keep alive: 1 23.94% <= 1 milliseconds 98.02% <= 2 milliseconds 99.64% <= 3 milliseconds 99.76% <= 4 milliseconds 99.82% <= 5 milliseconds 99.89% <= 6 milliseconds 99.90% <= 7 milliseconds 99.94% <= 8 milliseconds 99.97% <= 9 milliseconds 100.00% <= 10 milliseconds 100.00% <= 10 milliseconds 57603.69 requests per second #测试结果,milliseconds为毫秒,时间越短,性能越好。 [root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -q -d 100 #测试向指定Redis服务器的指定端口6379存取大小为100B的数据包的性能。 [root@redis redis]# redis-benchmark -t set,lpush -n 100000 -q #测试本机上Redis服务在进行set与lpush操做时的性能。 SET: 67659.00 requests per second LPUSH: 64516.13 requests per second
Redis数据库经常使用命令:
.
Redis数据库采用key-value(键值对)的数据存储形式,所使用的命令是set和get。
.
[root@localhost ~]# redis-cli #链接本地数据库 127.0.0.1:6379 > set test zhangsan #插入数据 OK 127.0.0.1:6379> get test #查询键值 "zhangsan" 127.0.0.1:6379> keys t* #查询以“t”开头的数据 1) "test" 127.0.0.1:6379> keys t? #查询以“t”开头后面包含一个任意一位的数据 (empty list or set) #没有查到,表明没有符合条件的数据 127.0.0.1:6379> keys t?? #查询以“t”开头后面包含一个任意两位的数据 (empty list or set) 127.0.0.1:6379> exists test #判断“test”键是否存在 (integer) 1 #表示test键存在 127.0.0.1:6379> exists yy #判断“yy”键是否存在 (integer) 0 127.0.0.1:6379> keys * #查询当前库中全部键 1) "counter:__rand_int__" 2) "mylist" 3) "key:__rand_int__" 4) "test" 5) "myset:__rand_int__" 127.0.0.1:6379> del test #删除test键 (integer) 1 127.0.0.1:6379> set www 23 OK 127.0.0.1:6379> type www #获取键“www”对应的value值类型 string
rename命令能够对已有的key进行重命名,还有一个重命名的命令为renamenx。二者区别是前者更改的目标key值无论存在与否,都将进行更改,直接覆盖目标key值的数据;后者renamenx命令是在更改时,会检查目标键值是否存在,若存在,将放弃更改。
127.0.0.1:6379> get www "23" 127.0.0.1:6379> set qq 123 #插入一条数据 OK 127.0.0.1:6379> renamenx www qq #将“www”更改成“qq” (integer) 0 #“qq”存在,放弃更改 127.0.0.1:6379> rename www qq #使用rename命令进行更改 OK 127.0.0.1:6379> get qq #直接覆盖目标数据 "23" 127.0.0.1:6379> dbsize #查看当前数据库中key的数目 (integer) 5
多数据库经常使用的命令:
Redis支持多数据库,Redis在没有任何改动的状况下默认包含16个数据库,数据库名使用数字0--15来依次命名。每一个库中的数据是独立的,也就是说在10库中查不到0库中的数据。
127.0.0.1:6379> select 10 #切换至编号10的库 OK 127.0.0.1:6379[10]> select 15 #切换至编号15的库 OK 127.0.0.1:6379[15]> select 0 #切换至编号0的库 OK 127.0.0.1:6379> move liuyi 10 #将该库中的数据移动到10库中 (integer) 1 127.0.0.1:6379> select 10 #切换至编号10的库 OK 127.0.0.1:6379[10]> get liuyi #查看移动过来的库 "23" #如今0库中已经查不到“liuyi”的数据了
清除数据库内数据:
Redis数据库的整库数据删除主要分为两个部分:清空当前数据库中的数据,使用flushdb命令实现;清空全部库中的数据,使用flushall命令。数据库清空操做比较危险,生产环境下慎用!!!