redis数据库安装及使用

关系数据库与非关系数据库
1、关系数据库
关系数据库是一个结构化的数据库,创建在关系模型基础上,一般面向记录。他借助于集合代数等数学概念和方法来处理数据库中的数据;关系模型指二维表格模型,因而一个关系数据库就是由二维表及其之间的联系组成的一个数据组织。在现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。
SQL(Structured Query Language,结构化查询语言)语句就是一种基于关系数据库的语言
2、非关系型数据库
NoSQL(NoSQL = Not Only SQL)是非关系型数据库,主要指非关系性、分布式、不提供ACID(数据库事务处理的四个基本要素)主流的NoSQL数据库有Redis、MongBD、Hbase、CouhDB等,这些数据库中的数据是“非关联的”
redis简介
redis是一个开源的、使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value(键值对)数据库
redis服务器程序是单进程模型,就是在一台服务器上可以同时启动多个Redis进程,而Redis的实际处理速度则完全依靠于主进程的执行效率,由此出现两种情况:
若在服务器上只运行一个Redis进程,当有多个客户端访问时,服务器的处理能力会在一定程度上下降;若在服务器上安装多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力
由此,在实际生产环境中根据实际的需求来决定开启多少个Redis进程
Redis优点
具有极高的数据读写速度:数据读取的速度最高可达到110000次s,数据写入速度最高可达81000次s
支持丰富的数据类型:仅仅支持简单的Key-value数据类型,还支持Strings、Lists、Hashes、Sets及Ordered Sets等数据类型操作
key 关键字=值
原子性:Redis的所有操作都是原子性的(原子性指的是一个或多个操作一期执行不被打断)
支持数据备份:及master-salve模式的数据备份
持久化的两种方式
实现数据持久化的两种方式:
(1)使用截图的方式,将内存中的数据不断写入磁盘(性能高,但可能会引起一定程度的数据丢失)
(2)使用类似mysql的方式,记录每次更新的日志

Redis单节点搭建及语法结构
上传软件包

[root@centos1 ~]# ls
anaconda-ks.cfg  redis-5.0.4.tar.gz

解压至指定文件夹

[root@centos1 ~]# tar zxvf redis-3.2.9.tar.gz
[root@centos1 ~]# cd  redis-3.2.9/

编译安装

[root@centos1 redis-3.2.9]# make
[root@centos1 redis-3.2.9]# make install 

配置

[root@centos1 redis-3.2.9]# cd utils/
[root@centos1 redis-3.2.9]# ./install_server.sh

在这里插入图片描述

启动

[root@centos1 redis-3.2.9]# netstat -anpt | grep redis

配置文件详解

[root@localhost utils]# vim /etc/redis/6379.conf
daemonize   yes                   //redis后台运行131行
bind 192.168.1.10                   //监听地址,服务器本地ip。62
pidfile  /var/run/redis_6379.pid       //pidfile文件对应端口。手写63行.
dir "/data/redis/data/6379"           //配置redis rdb数据保存位置。手写64行
port  6379                        //端口。86行
cluster-enabled  yes                //开启集群  把注释#去掉。724行
cluster-config-file  nodes_6379.conf   //集群的配置,配置文件首次启动自动生成。732行
cluster-node-timeout  15000      //请求超时15s 738行
appendonly  yes              //aof日志开启,有需要就开启,它会每次写操作都记录一条日志。596行

redis客户端登陆

[root@centos1 ~]#/usr/local/bin//redis-cli 
127.0.0.1:6379>
127.0.0.1:6379>quit		//退出

Redis测试工具
本庄主要介绍redis-cli,redis-benchmark
redis-cli命令行工具
Redis数据库系统也是一个典型的C/S(客户端/服务器端)架构的应用。使用redis-cli连接指定数据库:
[root@Centos1 ~]# redis-cli # 连接至本机的redis服务器
127.0.0.1:6379> ping # 检测redis服务是否启动
PONG

当然也可以指定远程主机的Redis数据库,命令语法:
redis-cli -h ip -p port -a passwd
-h指定远程主机
-p指定Redis服务的端口号
-a指定密码


数据库操作环境中的帮助信息:
help @: 获取中的命令列表
help :获取某个命令的帮助
help :获取可能帮助的主题列表
[root@Centos1 ~]# redis-cli
127.0.0.1:6379> help @list //查看与list数据类型相关的命令

127.0.0.1:6379> help get //查看set单个命令的帮助


redis-benchmark测试工具
redis-benchmark是官方自带的Redis性能测试工具,可以有效地测试Redis服务的性能
-h:指定服务器主机名
-p:指定服务器端口
-s:指定服务器socket
-c:指定并发连接
-n:指定请求数
-d:一字节(B)的形式指定SET/GET值的数据大小
-l:1=keep alive 0=reconnect
-r:SET/GET/INCR使用随机key,SADD使用随机值
-P:通过管道传输请求
-q:强制退出redis。进现实query/sec值
–csv,以CSV格式输出
-l:生成循环,永久执行测试
-t:仅运行以逗号分隔的测试命令列表
-l:idle模式,仅打开N个idle连接并等待

列如:向192.168.1.10地址,端口为6379的redis服务器发送100个并发连接与1000个请求测试性能
[root@centos1 ~]# redis-benchmark -p 6379 -c -100 -n 1000


Redis数据库常用命令
Redis数据库采用key-value(键值对)的数据存储形式
set:存放数据,基本的命令格式为set key value
get:获取数据,基本的命了格式为get key value
列如,在当前模式下存放一个key名叫name1,value为zs的数据;name2的数据为ls
[root@localhost ~]# redis-cli
127.0.0.1:6379> set name1 zs //创建名为name1的key,值为zs
OK
127.0.0.1:6379>set name2 ls //创建名为name2的key,值为ls
OK
127.0.0.1:6379> get name1 //获取name1的值
“zs”
127.0.0.1:6379> keys * //插看当前数据库的所有key
127.0.0.1:6379> keys name* //插看当前数据库以name开头的key
127.0.0.1:6379> exists name1 //查看当前数据库是否存在名为name1的key
(integer) 1 //存在
127.0.0.1:6379> exists name5 //查看当前数据库是否存在名为name5的key
(integer) 0 //不存在
127.0.0.1:6379> del name1 //删除name1
127.0.0.1:6379> type name2 //查看name2的数据类型
string

5)rename重命名
语法:rename 源key 目标key,但是注意,重命名后源KEY会删除,倘若有个值与重命名目标一样,则会执行覆盖操作

6)为了避免上述的误操作,redis为我们提供了renamenx这个命令,在执行重命名操作时会先判断目标key的名字是否已存在,存在测返回integer为0
renamenx语法与rename一致

多数据库的常用命令
1)多数据库间的切换
Redis支持多数据库,Redis在没有任何改动的情况下默认包含16个数据库,数据库各名称是用数字0-15来依次命名的。使用“select 数据库数字”来对数据库进行切换
0为默认登录到的数据库
127.0.0.1:6379> select 10 //切换到序号为10的数据库
OK
127.0.0.1:6379[10]> select 2 //切换到序号2的数据库
OK
127.0.0.1:6379[2]> select 0 //切换到序号为0的数据库
OK
127.0.0.1:6379>

2)多数据库间移动数据
Redis的多数据库在一定程度上是相对独立的。列如在数据库0上创建的键值不会同步到其他数据库上。Redis数据库提供了move命令,可以进行多数据库的数据移动
127.0.0.1:6379> get name2
“ls”
127.0.0.1:6379> move name2 1 //将键moshou移动到数据库1中
(integer) 1
127.0.0.1:6379> select 1 //切换至数据库1
OK
127.0.0.1:6379[1]> get name2 //查看存在键moshou
“ls”

3)清除数据库内数据
FLUSHDB async清除当前数据库数据
FLUSHALL async清除所有数据中的数据
(上述两个命令谨慎使用)

集群案例

redis-cluster集群
2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。
在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。

Redis数据分区
Redis cluster 采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:Slot=CRC16(key)&16384。每个节点负责维护一部分槽以及槽所映射的键值数据。
redis群集中的每个节点都负责哈希槽的子集,例如,您可能拥有一个包含3个节点的群集,其中:
节点A包含从0到5500的散列槽。
节点B包含从5501到11000的散列槽。
节点C包含从11001到16383的散列槽。

Redis-cluster搭建
Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。
我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,三主三从。

伪集群搭建

实验环境
主机 IP 角色 端口
CentOS7.4-2 192.168.100.102 Master 6379
CentOS7.4-3 192.168.100.103 Slave 6380

案例实施

CentOS7.4-2和CentOS7.4-3配置
安装redis后修改配置文件
[root@localhost ~redis-3.2.9]# tar zxvf redis-3.2.9.tar.gz
[root@localhost ~]# cd redis-3.2.9
[root@localhost redis-3.2.9]# make
[root@localhost redis-3.2.9]# make install
[root@localhost redis-3.2.9]# cd utils/
[root@localhost utils]# ./install_server.sh

[root@localhost ~]# vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.100.102
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-require-full-coverage yes
:wq!
[root@localhost utils]#systemctl stop firewalld
[root@localhost utils]# setenforce 0

[root@localhost ~]# /etc/init.d/redis_6379 restart
清楚数据库中所有数据
[root@localhost src]# redis-cli
127.0.0.1:6379> FLUSHDB
OK
CentOS7.4-2上使用脚本创建群集
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# yum -y install ruby rubygmes
连接xftp,获取redis-3.2.0.gem包
[root@localhost ~]# gem install redis --version 3.2.0
[root@localhost ~]# cd redis-3.2.9/src/
[root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.100.102:6379 192.168.100.103:6379

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值