java操作redis(十二)

java创建Jedis客户端

先把redis-server开启,对应的端口号也要开启,默认6379

  1. 连接本地redis()
Jedis jedis = new Jedis("localhost");

可以直接redis-server就可以,当然这是空的,要想历史数据还需要加载AOF或者RDB
2. 连接另一台电脑的redis

Jedis jedis = new Jedis("ip地址",端口号);

如果启动你会报错,并且报的是连接错误
Connection reset by peer: socket write error
第一先检查自己IP地址写对了吗?
第二再检查自己开redis服务器了吗?
第三是不是直接在cmd.exe上写redis-server,而没有写redis.windows.conf
上面没错误并且你还是新手的话那就应该是没解除保护模式等,

  1. 去掉绑定地址

java操作redis(十二)_第1张图片
注释或者删除
  2. 去掉保护模式
  java操作redis(十二)_第2张图片
  2. 如果是Linux还要开放6379端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
iptables-save

基本测试

			//获得数据
            String username = jedis.get("str3");
			System.out.println(username);
			
			//存储set数据
			jedis.set("add", "背景");
			System.out.println(jedis.get("add"));
			//获得所有的key给set集合,遍历
			Set keys = jedis.keys("*");	
			for(String s :keys) {
				System.out.println("key---"+s+"   value----"+jedis.get(s));
				}

这有问题,在这报了一个错误
WRONGTYPE Operation against a key holding the wrong kind of value
是因为有的key不是字符串类型的,
jedis.keys("*"); 这句话把所有的key都找出来了,但是有可能是list(列表)等其他类型
举个例子:
在这里插入图片描述
再执行程序就会
java操作redis(十二)_第3张图片
因为a不是String对应的存储结构,所以会报错
如果出现这个错误可以把rediis全删除或者找出把那个不是String的删除,这个只是基本测试,所以数据量就一点,以后就尽量不要出现获取所有的key再遍历的程序除非你知道这个key对应的是什么类型的,用那种类型的获取程序获取就没问题了。

使用JedisPoolConfig操作redis

再强调一遍,不要光开启redis-server,这是默认的,java这种用端口的是连接不上的,要在后面加上redis.windows.conf,
当然如果连接的是

Jedis jedis = new Jedis("localhost");

连接可以连接默认的

 //0、创建池子的配置对象(现在用这种方式配置参数,下一种方式用redis.properties的方式配置参数)
	        JedisPoolConfig poolConfig = new JedisPoolConfig();
	        poolConfig.setMaxIdle(30);//最大闲置个数
	        poolConfig.setMinIdle(10);//最小闲置个数
	        poolConfig.setMaxTotal(50);//最大连接数
	        
	        //1、创建一个redis的连接池
	        JedisPool pool = new JedisPool(poolConfig, "ip地址", 6379);
	        
	        //2、从池子中获取redis的连接资源
	        Jedis jedis = pool.getResource();
	        
	        //3、操作数据库
	        jedis.set("555","6666");
	        System.out.println(jedis.get("555"));
	        
	        //4、获得数据
	        String username = jedis.get("str3");
	        System.out.println(username);
	        //4、关闭资源
	        jedis.close();
	        pool.close();

java操作redis(十二)_第4张图片

封装redis配置连接操作redis

redis.properties

redis.url=192.168.43.161  //这个url建议每次用之前查一下,我连的手机的,url会换,
redis.port=6379
redis.pass=
redis.maxIdle=300
redis.minIdle=150
redis.maxTotal=30
redis.maxActive=1024
redis.maxWait=10000
redis.testOnBorrow=true

实现类

public class JedisPoolUtils {
	 
    private static JedisPool pool = null;
    
    static{
        //初始化
        //加载配置文件
        InputStream in = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
        Properties pro = new Properties();
        try {
            pro.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        //获得池子对象
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxIdle(Integer.parseInt(pro.get("redis.maxIdle").toString()));//最大闲置个数
        poolConfig.setMinIdle(Integer.parseInt(pro.get("redis.minIdle").toString()));//最小闲置个数
        poolConfig.setMaxTotal(Integer.parseInt(pro.get("redis.maxTotal").toString()));//最大连接数
        pool = new JedisPool(poolConfig,pro.getProperty("redis.url") , Integer.parseInt(pro.get("redis.port").toString()));
    }

    //获得jedis资源的方法
    public static Jedis getJedis(){
        return pool.getResource();
    }
    
    public static void main(String[] args) {
        Jedis jedis = getJedis();
        System.out.println(jedis.get("555"));
    }    
}

java操作redis(十二)_第5张图片
很多都实现了,不需要自己去写了方便,Ctrl+右键点击Jedis,在Outline查看

你可能感兴趣的:(Redis)