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

NOSQL

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

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

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

关系型数据库

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

缺点:

​慢

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

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

非关系型数据库

优点

快, 因为是内存的操作

缺点

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

在这里插入图片描述

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

Redis的五种常见的数据类型

在这里插入图片描述

1、String

在这里插入图片描述
在这里插入图片描述

2、List

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、set

在这里插入图片描述

4、zset

在这里插入图片描述
在这里插入图片描述

5、hash

在这里插入图片描述

在这里插入图片描述

redis持久化方式

1、RDB策略

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

在这里插入图片描述

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文件中

在这里插入图片描述

AOF策略的优点

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

AOF缺点

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

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

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

Jedis

操作redis的java客户端

在这里插入图片描述

在这里插入图片描述

maven

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.9.0</version>
</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();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

halulu.me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值