非关系型数据库之--Redis--Java操作Redis

2.1、介绍
Redis给Java提供了对应的方式操作Redis,代表性的有Jedis和RedisTemplate。我们上课使用Jedis,使用Jedis和Springboot整合。
2.2、使用
2.2.1、pom文件

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>

2.2.2、数据库连接配置
我们新建一个redis.properties文件
#Matser的ip地址 redis.hostName=zhiyou101 #端口号 redis.port=6379 #如果有密码 redis.password=123456 #客户端超时时间单位是毫秒 默认是2000 redis.timeout=10000 #最大空闲数 redis.maxIdle=300 #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal #redis.maxActive=600 #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性 redis.maxTotal=1000 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 redis.maxWaitMillis=1000 #连接的最小空闲时间 默认1800000毫秒(30分钟) redis.minEvictableIdleTimeMillis=300000 #每次释放连接的最大数目,默认3 redis.numTestsPerEvictionRun=1024 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 redis.timeBetweenEvictionRunsMillis=30000 #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 redis.testOnBorrow=true #在空闲时检查有效性, 默认false redis.testWhileIdle=true

#redis集群配置 #spring.redis.cluster.nodes=192.168.177.128:7001,192.168.177.128:7002,192.168.177.128:7003,192.168.177.128:7004,192.168.177.128:7005,192.168.177.128:7006 #spring.redis.cluster.max-redirects=3

#哨兵模式 #redis.sentinel.host1=192.168.177.128 #redis.sentinel.port1=26379 #redis.sentinel.host2=172.20.1.231 #redis.sentinel.port2=26379

2.2.3、创建数据库连接池
我们使用JavaConfig方式写数据库连接池
package com.zhiyou100.day6_26_redis.config;

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig;

/**
 * ClassName: RedisConfig
 * Description:
 * date: 2019/6/26 0026 上午 10:57
 * @author stt
 * @since JDK 1.8
 */
@Configuration
@PropertySource(value = {"classpath:redis.properties"})
public class RedisConfig {
    //创建日志对象
    Logger logger = LoggerFactory.getLogger(RedisConfig.class);
    //获取主机名
    @Value("${redis.hostName}")
    private String hostname;
    //端口号
    @Value("${redis.port}")
    private Integer port;
    //超时时间
    @Value("${redis.timeout}")
    private Integer timeout;
    //最大空闲数
    @Value("${redis.maxIdle}")
    private Integer maxIdle;
    //最多等待时间
    @Value("${redis.maxWaitMillis}")
    private Long maxWaitMillis;
    //最大连接数
    @Value("${redis.maxTotal}")
    private Integer maxTotal;
    //获取密码
    @Value("${redis.password}")
    private String password;
    //创建连接池对象
    @Bean
    public JedisPool jedisPool(){
        //创建JedisPoolConfig对象,设置连接数等配置
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxWaitMillis(maxWaitMillis);
        config.setMaxTotal(maxTotal);
        config.setMaxIdle(maxIdle);
        //创建JedisPool对象,将JedisPoolConfig对象传进去
        JedisPool jedisPool = new JedisPool(config, hostname, port, timeout,password);
        //输出该对象测试有没有创建成功。
        //输出使用日志对象输出,不适用单纯的输出语句
        logger.info("jedisPool===>"+jedisPool);
        //连接的端口,主机名等信息
        logger.info("主机名:"+hostname+"port:"+port);
        return jedisPool;
    }
}
JedisDemo
package com.zhiyou100.jedis.redis;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import javax.annotation.Resource;
import java.util.Iterator;
import java.util.Set;
@Component
public class JedisDemo {
    //注入jedispool对象
    @Resource
    private JedisPool pool;

    public Jedis getjedis(){
        System.out.println("jjjjjjjj");
        //获取jedis
        Jedis jedis = pool.getResource();
        return jedis;
    }
    public Set<String> getKeys(String keys){
        //获取jedis
        Jedis jedis = getjedis();
        Set<String> set = null;
        if (keys != null){
            set = jedis.keys(keys);
        }else {
            set = jedis.keys("*");
        }
        return set;
    }
}
RestController
package com.zhiyou100.jedis.controller;

import com.zhiyou100.jedis.redis.JedisDemo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.Jedis;

import javax.annotation.Resource;
import java.util.Set;

@RestController
public class RedisController {
    @Resource
    private JedisDemo jedisDemo;
    @RequestMapping(value = "jedis",method = RequestMethod.GET)
    public Jedis jedis(){
        return jedisDemo.getjedis();
    }
    //获取所有的key
    @RequestMapping("keys")
    public Set<String> getKeys(String key){
        return jedisDemo.getKeys(key);
    }
}

2.2.4、使用jedis完成crud操作
我们上边已经创建了jedisPool对象,我们从jedispool对象中获取jedis对象使用jedis对象操作redis。
2.2.4.1、获取jedis

2.3、注意
1、将Linux的防火墙关闭
临时关闭:systemctl stop firewalld
开机禁用:systemctl disable firewalld
启动防火墙:systemctl start firewalld
开机启用:systemctl enable firewalld
2、查看防火墙状态
[root@zhiyou101 ~]# firewall-cmd --state
3、关闭redis的受保护模式
到redis.conf文件中将protected-mode改为no
4、bind注释掉
5、Jedispool
2.4、url
http://localhost:8080/keys
2.5、项目中使用
项目中我们直接使用redis的工具类,一般在service层中使用,
1)在调用mapper查询之前调用jedis的对应的查询,在mapper之后调用对应的添加。
2)调用修改添加删除时需要保证redis中的数据和数据库中的数据是同步的,需要将redis中的数据先删除,再修改mysql中的数据,然后再查询和添加到redis中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值