其他分享
首页 > 其他分享> > 配置文件、RDB、Jedis

配置文件、RDB、Jedis

作者:互联网

配置文件

# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.

配置文件不区分大小写

# include .\path\to\local.conf
# include c:\path\to\other.conf

可以导入其他配置文件

网络

通用配置GENERAL

快照SNAPSHOTTING

在规定的事件执行了多少次操作,则会持久化文件.rdb .aof

#持久化规则
save 900 1
#如果900秒内,如果至少有一个key进行了修改,我们及时进行持久化
save 300 10
#如果300秒内,如果至少有一个10key进行了修改,我们及时进行持久化
save 60 10000

Redis是内存数据库 ,如果没有持久化,那么数据断电小时

复制REPLICATION (主从复制)

安全SECURITY

设置密码:

config set requirepass "123456"
auth 123456

客户端CLIENTS

APPEND ONLY MODE AOF

RDB

什么是RDB

RDB持久化,是Redis可以将数据库状态保存到一个RDB文件中,并可以通过该RDB文件生成RDB文件的时候的数据库状态。RDB文件是一个经过压缩的二进制文件。

Jedis

我们要使用java来操作Redis

什么是Jedis

1.配置环境

<dependencies>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.76</version>
    </dependency>
</dependencies>

2.编码测试:

基本代码

package com.Test;

import redis.clients.jedis.Jedis;

import java.util.Set;

public class TestPing {
    public static void main(String[] args) {
        //1.new 一个Jedis对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //之前的指令很重要
        System.out.println(jedis.ping());
        //常用api
        jedis.flushDB();//清空数据
        jedis.exists("name");//某个键值是否存在
        jedis.set("name","hjz");//新增键值对
        Set<String> keys = jedis.keys("*");//系统中所有键值
        jedis.del("name");//删除键
        jedis.exists("name");//判断是否存在
        jedis.type("name");//判断键的存储类型
        jedis.randomKey();//随机返回一个key的空间
        jedis.rename("name","username");//重命名
        jedis.get("username");//取出username
        jedis.select(0);//按照索引查询
        jedis.flushDB();//删除选择数据库的值
        jedis.dbSize();//返回当前数据库的key的数目
        jedis.flushAll();//删除所有数据库的所有key
    }
}Spring Boot整合Redis

String类型

package com.Test;

import redis.clients.jedis.Jedis;

import java.util.concurrent.TimeUnit;

public class TestString {
    public static void main(String[] args) {
        //1.new 一个Jedis对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.set("key1","value1");//添加数据
        jedis.set("key2","value2");//添加数据
        jedis.set("key3","value3");//添加数据
        jedis.del("key1");//删除key1
        jedis.get("key2");//得到key2
        jedis.set("key3","end");//修改key3
        jedis.append("key3","aaa");//在key3后加值
        jedis.mset("key01","value1","key02","value02");//增加多个键值对
        jedis.mget("key01","key02");//获得多个键值对
        jedis.del("key01","key02");//删除多个键值对
        //分布式锁的-新增键值对放置覆盖原来的值
        jedis.setnx("key1","value1");
        jedis.setnx("key2","value2");
        jedis.setnx("key3","value3");
        jedis.get("key1");
        //设置过期时间
        jedis.setex("key4",5,"value4");
        jedis.get("key4");
        //睡觉
        try{
            TimeUnit.SECONDS.sleep(3);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        //获得原来的值,更新为新值
        jedis.getSet("key2","key2Get2");
        jedis.get("key2");
        jedis.getrange("key2",2,4);//获得key2的字符串


    }
}

List类型

事务

package com.Test;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestShiwu {
    public static void main(String[] args) {
        //1.new 一个Jedis对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //事务
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello","world");
        jsonObject.put("name","hjz");
        //开启事务
        Transaction muil =jedis.multi();
        String result = jsonObject.toJSONString();
        try{
            muil.set("user1",result);
            muil.set("user2",result);
            int i=1/0;//代码抛出异常,执行失败
            muil.exec();//执行事务
        }catch (Exception e){
            //放弃事务
            muil.discard();
            e.printStackTrace();
        }finally {
            System.out.println(jedis.get("user1"));
            jedis.close();//关闭连接
        }

    }
}

spring boot操作数据:sprig-data jpa jdbc mongodb redis

Spring Data也是Spring Boot起名的项目

jedis:采用的是直连,多线程是不安全的,如果想要避免是不安全的,使用jedis pool 连接池!BIO

lettuce:采用netty 实例可以多个线程中共享,不存在线程不安全的情况,可以减少线程的数量,更像NIO模式

源码分析

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
@AutoConfiguration
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
    public RedisAutoConfiguration() {
    }

    @Bean
    @ConditionalOnMissingBean(
        name = {"redisTemplate"}
    )
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)//不纯在才生效
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
    //默认的RedisTempalte没有过多的设置,redis都是需要序列化的
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean//由于String类型最常使用单独提出来一个
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        return new StringRedisTemplate(redisConnectionFactory);
    }
}

整合测试

标签:配置文件,new,class,jedis,RDB,Jedis,public,键值
来源: https://www.cnblogs.com/HJZ114152/p/16410498.html