Java三种获取redis的连接及redis_String类型演示(适合新手)

网友投稿 279 2023-02-11

Java三种获取redis的连接及redis_String类型演示(适合新手)

0>确保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(不繁忙时最大连接数),http://

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 {

//静态代码块:随着类的加载而加载,一般只会加载一次

JedisPoolConfighttp:// config = new JedisPoolConfig();

config.setMaxTotal(50); //连接池最大有多少连接

config.setMaxIdle(25); //不繁忙时最多有多少个

config.sethttp://MinIdle(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();

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聚合数据网站分享(互联网内容聚合平台)
下一篇:SpringBoot用@Async注解实现异步任务
相关文章

 发表评论

暂时没有评论,来抢沙发吧~