Redis整合

前言

redis简单来讲是内存数据库,因为是将数据存放到内存,因此读写速率高快(传统数据库,不是先从内存转到硬存,慢)

1.jedis连接Redis

redis是java操作redis的客户端,通过他我们能通过java语句操控redis。

jedis对于redis,相对于jdbc对于mysql。(底层)

1.1 jedis连接redis


本笔记采用,md由于底层几乎没人用,因此导入springboot依赖,外加springboot整合redis依赖即可。
	  springboot1.0x 默认采用的连接池技术是jedis
	  2.0 以上版本连接池是Lettuce

			org.springframework.boot
			spring-boot-starter-data-redis
			
				
					io.lettuce
					lettuce-core
				
			
		
		
		
		
			redis.clients
			jedis
		
Jedis jedis = new Jedis("192.168.88.135",6379);
        // 设置认证密码
        jedis.auth("123456");
        // 选择数据库
        jedis.select(0);
        System.out.println(jedis.ping());
        // 设置string键值
        jedis.set("name","qhx");
        String name = jedis.get("name");
        if (jedis != null){
            jedis.close();
        }

看的出,穿件jedis对象之后,发现他默认封装的方法api就是redis的指令。

1.2 jedis连接池连接Redis

看的出跟mysql数据库连接池一样。

1.创建 数据库连接池对象,封装jedisconfig配置,以及数据库密码,端口号、redisIP

2.由数据库连接池对象创建数据库对象

PS:由jedisPool创建jedis对象,不能设置密码,ip之类的。

   // 初始化jedis连接池对象
        JedisPool jedisPool = new JedisPool(new JedisPoolConfig(), "192.168.88.135", 6379, 10000, "123456");
      // 从数据库连接器获取redis对象
        Jedis jedis = jedisPool.getResource();
        jedis.select(2);
        // 使用ping命令测试连接成功
        System.out.println(jedis.ping());
        jedis.set("name","qhx");
        jedis.get("name");
        if(jedis !=null){
            jedis.close();
            jedisPool.close();
        }

1.3 将Jedis对象交给spring管控

理解Mysql一样,就是将数据库连接池,你肯定要连接一次吧?创建多次数据库连接池,浪费资源。就是静态实例,你是由一个数据库连接池对象,能创建多个数据库连接对象。

那就是把他封装一个静态工厂之类的,但是这样写不太高级,那就将他讲给spring管控,也就是第三方bean。默认单例化对象。

将配置信息写在application.yml,方便以后集中管控

application.yml

spring:
  redis:
    password: 123456
    # 默认0库
    database: 0
    #连接超时时间
    timeout: 10000ms
    port: 6379
    host: 192.168.88.135
    jedis:
      pool:
        # 设置最大连接数
        max-active: 1024
        # 最大阻塞时间
        max-wait: 10000ms
        # 最大空间连接,默认8
        max-idle: 200
        # 最小空间连接,默认5
        min-idle: 4

Redis.config

遇到的问题:

 注意白色是字符串,蓝色的是number,读取时一定不要弄错了

Redis整合_第1张图片

@Configuration
public class RedisConfig {

    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.jedis.pool.max-wait}")
    private String maxWaitMillis;
    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;
    @Value("${spring.redis.jedis.pool.max-active}")
    private int maxTotal;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.timeout}")
    private String timeout;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.database}")
    private int database;


    @Bean /** 返回jedis连接池*/
    public JedisPool getJedisPool(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 设置最大连接数
        jedisPoolConfig.setMaxTotal(maxTotal);
        // 设置最大空间连接
        jedisPoolConfig.setMaxIdle(maxIdle);
        // 设置最小空间连接
        jedisPoolConfig.setMinIdle(minIdle);
       // 设置最大阻塞时间(注意是个10000ms字符串)
       jedisPoolConfig.setMaxWaitMillis(Long.parseLong(maxWaitMillis.substring(0,maxWaitMillis.length()-2)));
       // 创建数据库对象
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,host, port,
                (int) Long.parseLong(timeout.substring(0,timeout.length()-2)),password,database);

        return jedisPool;
    }
}

1.4 jedis操作各种数据类型

     Jedis jedis = jedisPool.getResource();
       // 操作数据类型 -- java代码
       jedis.set("name","qhx");
     
       // -- redis指令
       set name qhx

其实,看上述操作jedis和原指令无吊区别。会redis操作指令就会这个。

hash封装map更简单

Redis整合_第2张图片

redis操作指令入门级别:https://blog.csdn.net/Qhx20040819/article/details/131219793

 Redis整合_第3张图片

 事务处理

Redis整合_第4张图片

 操控byte数组

先说一下,一个java对象要正常实现序列化:

  1. 对象必须实现Serializable 接口,这是Java提供的标准的序列化接口。

  2. 使用 Java 序列化机制提供的 ObjectOutputStream 类将对象写入到输出流中。通过 ObjectOutputStreamwriteObject() 方法可以将一个对象序列化后,写入到输出流(如文件流、网络流等)中。

你可能感兴趣的:(Redis,redis,数据库,java)