NoSQL数据库概述

NoSQL =not only sql 意味着不仅仅是SQL,泛指非关系型数据库,nosql型数据库不依赖于业务逻辑方式存储,而是以简单的key-value方式存储,可以增加数据库的扩展能力

Redis简介

数据存储在内存中,支持持久化,主要用作备份恢复,除了支持key-value形式,还支持lsit set hash zset等, 一般作为缓存数据库辅助持久化的数据库

Redis安装

​redis中文官网​​​ :​​http://www.redis.net.cn/​

方式一:可根据官方文档给出的方式进行安装

Redis--集群搭建_集群

方式二:安装redis-3.2.5

下载获得下载获得redis-3.2.5.tar.gz后将它放入我们的Linux目录/opt
解压命令:tar -zxvf redis-3.2.5.tar.gz
解压完成后进入目录:cd redis-3.2.5
yum install gcc
yum install gcc-c++
在redis-3.2.5/ 目录下执行make distclean -->make
make install

启动redis

1. 备份redis.conf:拷贝一份redis.conf到其他目录
2. 修改redis.conf文件daemonize no 改为yes :让在后台启动
3. 启动命令:执行redis-server /myredis/redis.conf
4. redis-cli :启动客户端
5. ping :如果输出pong 则证明成功

关闭redis

shutdown

Redis的主从复制

拷贝多个redis.conf 文件 include
指定pid文件名字pidfile
指定端口port
设置Dump.rdb名字dbfilename

include /home/wangyg/myredis/master_slave/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

主从信息打印

info replication

设置成为从服务器

slaveof <ip> <port>

哨兵模式

在自定义配置目录下新建sentinel.conf文件

在配置文件中填写内容:
sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称, 1 为 至少有多少个哨兵同意迁移的数量。
启动哨兵
执行redis-sentinel  /myredis/sentinel.conf 

redis集群

安装环境

yum install ruby
yum install rubygems
拷贝redis-3.2.0.gem到/opt目录下
执行在opt目录下执行 gem install --local redis-3.2.0.gem

6个实例:端口分别为6379,6380,6381,6389,6390,6391
拷贝多个redis.conf文件
开启daemonize yes
Pid文件名字
指定端口
Log文件名字
Dump.rdb名字
Appendonly 关掉或者换名字

安装redis cluster配置修改

cluster-enabled yes: 打开集群模式
cluster-config-file nodes-6379.conf 设定节点配置文件
cluster-node-timeout 15000 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
将6个节点全部启动
进入src目录: cd /opt/redis-3.2.5/src

./redis-trib.rb create --replicas 1 192.168.31.211:6379 192.168.31.211:6380 192.168.31.211:6381 192.168.31.211:6389 192.168.31.211:6390 192.168.31.211:6391  //需要根据本机ip进行修改
cluster nodes :redis-cli 中输入命令查看集群
//利用jedis测试集群
@Test
public void test1() {
//需要查看集群线程是否起来了
Set<HostAndPort> set = new HashSet<>();
set.add(new HostAndPort("192.168.1.101", 6379));
JedisCluster jedisCluster = new JedisCluster(set);

jedisCluster.set("k1", "v1");
System.out.println(jedisCluster.get("k1"));
}