2021/09/07笔记

我们于2021/09/07 的学习目标是:Redis,核心任务为:

1、学习技术:

1)、关系型数据库与非关系型数据库

2)、Java操作Redis

3)、Redis搭建主从复用

2、文档总结

1)、关系型数据库与非关系型数据库

数据库按照连接分,可以分为关系型数据库和非关系型数据库

  • 关系型数据库:指采用了关系模式(二维表格模型)来组织数据的数据库。
  • 非关系型数据库:指非关系型的,分布式的,且一般不保证会遵循ACID原则的数据存储系统。

非关系型数据库的结构:

  • 以键值对的形式存储数据
  • 结构不固定
  • 每一个元组可以有不一样的字段
  • 每个元组可以根据需要增加键值对
  • 不局限于固定结构

非关系型数据库的特点:

  • 可以减少一些时间和空间的开销
  • 适合大量,动态,短时间存储数据

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

  • 数据存储结构:关系型数据库有明确的表结构和表关系,并且需要使用DDL(Data Definition Language)即数据库模式定义语言来修改表结构,不是很容易进行扩展;非关系型数据库则是基于键值对的方式进行存储,对于数据的格式和结构十分灵活,方便扩展。
  • 数据一致性:
  • 关系型数据库强调数据的强一致性;非关系型数据库强调的是数据的最终一致性。

2)、Java操作Redis

创建SpringBoot项目并添加pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <!-- lookup parent from repository -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/>
    </parent>
	
	<!-- FIXME Subscribe to my BLOG!! -->

    <groupId>com.sdf</groupId>
    <artifactId>radis_test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- JUnit Jupiter API -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>

        <!-- spring data redis 组件 -->
        <dependency>

            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--
            1.x 的版本默认采用的连接池技术是 Jedis,
            2.0 以上版本默认连接池是 Lettuce,
            如果采用 Jedis,需要排除 Lettuce 的依赖。
            -->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- jedis 依赖 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!-- web 组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- test 组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
	
	<!-- TODO Subscribe qq_59903099@CSDN -->
</project>

application.yml配置文件

spring:
  redis:
    # Redis服务器地址
    host: 192.168.11.4
    # Redis服务器端口
    port: 6379
    # Redis服务器密码
    password: qq_59903099@CSDN
    # 选择哪个库,默认0库
    database: 0
    # 连接超时时间
    timeout: 30000ms
    jedis:
      pool:
        max-active: 1024
        max-wait: 30000ms
        max-idle: 200
        min-idle: 5

测试连接

@Test
public void redisTest1() {
	System.out.println("RedisTest.redisTest1");
	Jedis jedis =new Jedis("192.168.11.4",6379,30000,30000);
	jedis.auth("root");
	jedis.select(0);
	System.out.println(jedis.ping());
}

通过Redis连接池获取连接对象并操作服务器

@Test
public void redisTest2() {
	// 初始化redis客户端连接池
	JedisPool jedisPool = new JedisPool(new JedisPoolConfig(),"192.168.10.100", 6379, 10000, "root");
	// 从连接池获取连接
	Jedis jedis = jedisPool.getResource();
	// 指定数据库 默认是0
	jedis.select(2);
	// 使用ping命令,测试连接是否成功
	String result = jedis.ping();
	System.out.println(result);// 返回PONG
	// 添加一条数据
	jedis.set("username", "zhangsan");
	// 获取一条数据
	String username = jedis.get("username");
	System.out.println(username);
	// 释放资源
	if (jedis != null)
	jedis.close();
}

3)、Redis搭建主从复用

创建三个目录

mkdir -p /opt/redis/data

mkdir -p /opt/redis/log

mkdir -p /opt/redis/conf

复制redis.conf至/opt/redis/conf目录下

cp /root/redis-5.0.5/redis.conf /opt/redis/conf/redis-common.conf

修改redis-common.conf公共配置文件

#注释绑定端口

#bind 127.0.0.1



#关闭保护模式,修改为no

protect-mode no



#注释公共配置端口

#port 6379



#修改为后台启动

daemonize yes



#注释进程编号记录文件

#pidfile /var/run/redis_6379.pid



#注释公共配置日志文件

#logfile ""



#注释公共配置日志文件

#在默认情况下,Redis 将数据库快照

#保存在名字为 dump.rdb 的二进制文件中

#当然,这里可以通过修改 redis.conf 配置文件

#来对数据存储条件进行定义

#规定在“ N 秒内数据集至少有 M 个改动”这一条件被满足时

#自动保存一次数据集

#也可以通过调用save 或bgsave

#手动让Redis进行数据集保存操作

#dbfilename和dir组合使用

#dbfilename找dir路径生成数据文件

#dbfilename dump.rdb

dir /opt/redis/data



#添加从服务器访问主服务器认证

masterauth root



#添加访问认证

requirepass root



# 当appendonly为yes时

#每当Redis执行一个改变数据集的命令时(比如 SET)

#这个命令就会被追加到 AOF 文件的末尾

#这样的话,当Redis重启时

#程序就可以通过重新执行AOF文件中的命令

#来达到重建数据集的目的

appendonly no



# appendfilename和dir组合使用,找dir(/opt/redis/data)路径生成数据文件

#appendfilename "appendonly.aof"



#从服务器默认是只读不允许写操作

#不用修改 :-)

slave-read-only yes

添加3个服务的私有配置文件

touch redis-6379.conf

touch redis-6380.conf

touch redis-6381.conf

编辑私有配置文件

#复制redis-6379.conf的内容至redis-6380.conf,redis-6381.conf

# 并且修改其内容,slaveof以外的将6379替换即可



#引用公共配置

include /opt/redis/conf/redis-common.conf

#进程编号记录文件

pidfile /var/run/redis-6379.pid

#进程端口号

port 6379

#日志记录文件

logfile "/opt/redis/log/redis-6379.log"

#数据记录文件

dbfilename dump-6379.rdb

#追加文件名称

appendfilename "appendonly-6379.aof"

#下面的配置无需在6379里配置

#备份服务器从属于6379推荐配置配局域网IP

slaveof 192.168.10.100 6379

查看redis服务器主从状态

./redis-cli -p 6379 -a root

运行命令

info replication

结果role:master

./redis-cli -p 6380 -a root

./redis-cli -p 6381 -a root

运行命令

info replication

结果role:slave

在主服务器下添加数据 并测试从服务器数据是否正常显示

结果:从服务器只读,不允许写操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值