java中redis的list用法 java操作redis list集合

admin2024-06-06  7

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的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_java中redis的list用法,第1张

注释或者删除

  2. 去掉保护模式

 

java中redis的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_数据_02,第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<String> 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的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_redis_03,第3张

再执行程序就会

java中redis的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_System_04,第4张

因为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的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_redis_05,第5张

封装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的list用法 java操作redis list集合,java中redis的list用法 java操作redis list集合_redis_06,第6张

很多都实现了,不需要自己去写了方便,Ctrl+右键点击Jedis,在Outline查看


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!