Java获取redis连接 Java三种获取redis的连接及redis_String类型演示(适合新手)
达拉道·蒂夏 人气:00>确保redis进程服务开启
1>第一种:直接获取redis连接,通过redis.()方法测试连接,如果返回PONG则证明连接正常
//1> jedis的入门代码案例,测试连接 @Test public void test01(){ //1. 获取java连接 redis的连接对象 Jedis jedis = new Jedis("node1", 6379); //2. 执行相关操作 String ping = jedis.ping(); System.out.println(ping); //返回PONG,说明连接成功 //3. 释放资源 jedis.close(); }
2>第二种:通过redis连接池获取redis连接,创建连接池的时候需要指定参数,
setmaxTotal(最大连接数),
setMaxIdle(不繁忙时最大连接数),
setMinIdle(不繁忙时最少连接数);
//2> jedis连接池相关操作 @Test public void test02(){ //1. 创建连接池对象(需要通过配置指定连接池各种情况下有多少连接) JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); //连接池最大有多少连接 config.setMaxIdle(25); //不繁忙时最多有多少个 config.setMinIdle(10); //不繁忙时最少有多少个 JedisPool jedisPool = new JedisPool(config, "node1", 6379); //2. 从连接池获取一个连接对象 Jedis jedis = jedisPool.getResource(); //3. 执行相关操作 System.out.println(jedis.ping()); //4. 释放资源 jedis.close(); }
3>自定义RedisUtils,利用静态代码块使连接池随着类的加载只加载一次,防止每次想创建连接的时候都得先构建连接池浪费资源;
public class JedisUtils { private static JedisPool jedisPool; //构造方法私有化 private JedisUtils(){} static { //静态代码块:随着类的加载而加载,一般只会加载一次 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); //连接池最大有多少连接 config.setMaxIdle(25); //不繁忙时最多有多少个 config.setMinIdle(10); //不繁忙时最少有多少个 jedisPool = new JedisPool(config, "node1", 6379); } //提供方法获取jedis连接对象 public static Jedis getJedis(){ return jedisPool.getResource(); } }
3.1>测试工具类
//3> 测试工具类 @Test public void test03(){ //1. 从工具类获取连接 Jedis jedis = JedisUtils.getJedis(); //2. 执行相关操作(测试连接) System.out.println(jedis.ping()); //3. 释放资源(归还) jedis.close(); }
4> redis的五种数据类型
字符串:String
特点: 存储所有的字符和字符串
应用场景: 做缓存使用
哈希 :hash
特点: 相当于java中hashMap集合
应用场景: 可以存储javaBean对象, 使用场景不多,可被String替代
list:集合
特点: 相当于java中linkList, 是一个链表的结构
应用场景: 做任务队列,在java中客户端提供了线程安全获取集合数据的方式
set :集合
特点: 唯一, 无序
应用场景: 集合运算,例如去重复的操作
应用场景: 一般用来做排行榜
有序set集合: sorted set
特点:唯一, 有序
4.1> 使用jedis操作redis_String(String类型)
//4.使用jedis操作redis_string @Test public void test04() throws Exception{ //1. 从工具类获取连接 Jedis jedis = JedisUtils.getJedis(); //2. 执行相关操作,(操作redis中String类型) String ping = jedis.ping(); if ("PONG".equalsIgnoreCase(ping)){ //进去说明正常连接到redis //2.1 设置数据 jedis.set("name","索隆"); jedis.set("age","25"); //2.2 获取数据 String name = jedis.get("name"); String age = jedis.get("age"); System.out.println(name+" "+age); System.out.println("-----------------------------"); //2.3 自增 +1 jedis.incr("age"); jedis.incr("age"); jedis.incr("age"); jedis.incr("age"); //2.4 自减 -1 jedis.decr("age"); jedis.decr("age"); //2.5 获取age的值 System.out.println("年龄为:"+jedis.get("age")); System.out.println("------------------------------"); //2.6 设置过期时间: 为新创建的key设置过期时间 setex jedis.setex("birthday",10,"1997-11-11"); //2.7 获取有效时间 :ttl while(jedis.exists("birthday")){ //进来就说明还存在 Long ttl = jedis.ttl("birthday"); System.out.println("有效时间还有" + ttl); //睡眠 Thread.sleep(1000); } } //3. 释放资源(归还) jedis.close(); }
加载全部内容