Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis

目录

    • NOSQL
    • Redis的五种常见的数据类型
      • 1、String
      • 2、List
      • 3、set
      • 4、zset
      • 5、hash
    • redis持久化方式
      • 1、RDB策略
      • 2、AOF策略
    • Jedis

NOSQL

NOSQL(Not Only Sql) 不仅仅是sql, 泛指非关系型数据库

非关系型数据库里面有一个很重要类型数据库: 缓存数据库.

作用:应对基于海量用户和海量数据前提下的数据处理问题。

关系型数据库

优点:
是磁盘数据库,数据永久保存在磁盘上,所以数据安全

缺点:

​慢

​ 原因1: 磁盘数据库的续写是IO的读写

原因2: 关系型数据库有各种约束、检查、事务操作等逻辑控制

非关系型数据库

优点

快, 因为是内存的操作

缺点

数据不安全,会容易丢失部分数据

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第1张图片

海量的访问先访问NOSql, NOsql中没有数,会访问mysql的数据写入到NOSql中, 海里的访问都会访问到NOSql中的数据

Redis的五种常见的数据类型

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第2张图片

1、String

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第3张图片
Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第4张图片

2、List

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第5张图片

在这里插入图片描述

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第6张图片
在这里插入图片描述

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第7张图片

3、set

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第8张图片

4、zset

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第9张图片
Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第10张图片

5、hash

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第11张图片

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第12张图片

redis持久化方式

1、RDB策略

Redis DataBase(RDB) , 是redis的默认开启的持久化策略. 在符合持久化条件时会将这一时刻内存所有数据进行持久化到磁盘文件上dump.rdb, 由于持久化的是某一时刻所有内存数据又叫快照策略.

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第13张图片

RDB默认规则:

如果有1个以上的key发生改变(增删改), 那么900秒(15分钟)持久化一次数据到dump.rdb文件中

如果有10个以上的key发生改变(增删改), 那么300秒(5分钟)持久化一次数据到dump.rdb文件中

如果有10000个以上的key发生改变(增删改), 那么60秒(1分钟)持久化一次数据到dump.rdb文件中

rdb策略的优点

持久化频率低, 所以redis的缓存性能不会受到影响

rdb策略的缺点?

由于持久化频率低, 导致数据丢失严重, 数据不安全

2、AOF策略

这个策略默认没有开启, 这个策略是每一秒将一秒内的增删改的命令持久化追加到appendonly.aof文件中

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第14张图片

AOF策略的优点

持久化频率高了, 数据安全性高, 数据不易丢失, 最多丢失1秒内的数据

AOF缺点

持久化频率高了, redis的性能会受到影响, 如果持久化频率高会导致cpu的压力大

RDB和AOF以后到底推荐使用哪一个呢

如果希望数据安全性高,才开AOF,否则只建议使用RDB,因为AOF会降低redis的性能, 严重影响CPU(cpu超过60%都会选择关闭AOF)。注意AOF很影响redis的性能

Jedis

操作redis的java客户端

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第15张图片

Redis NOSQL、 Redis的五种常见的数据类型 、redis持久化方式 、Jedis_第16张图片

maven

<dependency>
  <groupId>redis.clientsgroupId>
  <artifactId>jedisartifactId>
  <version>2.9.0version>
dependency>

jedis.properties

# 最大连接数
maxTotal=10
# 最大超时时间
maxWaitMillis=30000
# 服务器的主机地址
host=localhost
# redis服务器的端口号
port=6379

获取Jedis的工具类

/**
 * 目标:对外提供Jedis的连接对象
 */
public class JedisUtils {
     

    //1.定义全局的连接池
    private static JedisPool jedisPool;

    //2.初始化连接池对象
    static {
     

        //使用ResourceBundle读取属性配置文件jedis.properties的数据
        //  介绍:ResourceBundle 译为“资源包”也可以解析properties文件数据
        //  创建资源包对象语法:ResourceBundle resourceBundle = ResourceBundle.getBundle(“文件名”)  根据类路径下的文件名读取
        //  读取数据的语法: String value = resourceBundle.getString("key")  根据key读取value

        //创建ResourceBundle资源包对象
        ResourceBundle resourceBundle = ResourceBundle.getBundle("jedis");
        //读取数据
        Integer maxTotal = Integer.valueOf(resourceBundle.getString("maxTotal"));
        Integer maxWaitMillis = Integer.valueOf(resourceBundle.getString("maxWaitMillis"));
        String host = resourceBundle.getString("host");
        Integer port = Integer.valueOf(resourceBundle.getString("port"));

        //创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(maxTotal); //最大连接数
        config.setMaxWaitMillis(maxWaitMillis); //3秒

        //创建连接池对象
        jedisPool = new JedisPool(config, host, port);
    }

    //3.对外提供共有的方法获取连接
    public static Jedis getJedis(){
     
        return jedisPool.getResource();
    }
}

ublic class JedisTesy2 {
     

    @Test
    public void test(){
     

        Jedis jedis = JedisUtil.getJedis();

        jedis.set("name","halulu");

        jedis.set("name","halulu加强版");

        String name = jedis.get("name");
        System.out.println("name = " + name);
        jedis.del("name");

        jedis.setex("name",300, "halulu逃生版");

        jedis.setnx("name","halulu");

        jedis.close();
    }
}

你可能感兴趣的:(#,MySQL)