前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 中使用 Redis

Java 中使用 Redis

作者头像
Demo_Null
发布2020-10-09 15:07:39
1.3K0
发布2020-10-09 15:07:39
举报
文章被收录于专栏:Java 学习

1.1 Jedis 快速使用

  Jedis 是 Redis 官方推荐的 Java 连接开发工具。我们需要通过 Jedis 在 Java 中操作 Redis。

1.1.1 基本使用

  Jedis 的使用相当简单,只需要在创建对象时指定 host、port、password 就行了,没有设置密码的可以省略 password。Jedis 对象创建之后,底层会开启一条 Socket 通道和 Redis 服务进行连接。在使用完 Jedis 对象之后,需要调用 close() 方法把连接关闭,否则会占用系统资源。

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 使用
 */
public class JedisTest {

    @Test
    public void text() {
    	// 创建连接
        Jedis jedis = new Jedis("localhost", 6379);
		// 操作 Redis
        jedis.set("time", new Date().toString());
		// 释放资源
        jedis.close();
    }
}

1.1.2 操作 string

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 操作 string
 */
public class JedisTest {

    @Test
    public void textString() {
    	// 创建连接
        Jedis jedis = new Jedis("localhost", 6379);
        
		// 操作 string
        jedis.set("time", new Date().toString());
        // 设置过期时间,60s
        jedis.setex("key", 60, "value");
        
        // 获取数据
        String time = jedis.get("time");
        System.out.println(time);
	
		// 释放资源
        jedis.close();
    }
}

1.1.3 操作 hash

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 操作 hash
 */
public class JedisTest {

    @Test
    public void textHash() {
        // 创建连接
        Jedis jedis = new Jedis("localhost", 6379);

        // 操作 hash
        jedis.hset("hash", "name", "张三");
        jedis.hset("hash", "age", "23");
        jedis.hset("hash", "sex", "0");

        // 获取数据
        String name = jedis.hget("hash", "name");
        System.out.println(name);

        // 删除数据
        jedis.hdel("hash", "age");

        // 获取所有数据
        System.out.println();
        Map<String, String> hash = jedis.hgetAll("hash");
        hash.keySet().forEach(s -> System.out.println(hash.get(s)));

        // 释放资源
        jedis.close();
    }
}

1.1.4 操作 list

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 操作 list
 */
public class JedisTest {

    @Test
    public void textList() {
        // 创建连接, 空参默认 "localhost", 6379
        Jedis jedis = new Jedis();

        // list 添加数据
        // 1. 从左侧(头部)存
        jedis.lpush("list", "1", "2", "3");
        // 2. 从右侧(尾部)存
        jedis.rpush("list", "a", "b", "c");

        // 获取数据
        List<String> list = jedis.lrange("list", 0, -1);
        System.out.println(list);

        // 删除数据
        // 1. 从左侧删除
        jedis.lpop("list");
        // 2. 从右侧删除
        jedis.rpop("list");


        // 释放资源
        jedis.close();
    }
}

1.1.5 操作 set

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 操作 set
 */
public class JedisTest {

    @Test
    public void textSet() {
        // 创建连接, 空参默认 "localhost", 6379
        Jedis jedis = new Jedis();

        // set 添加数据
        jedis.sadd("set", "a", "b", "c");
        jedis.sadd("set", "1", "b", "3");

        // 获取数据
        Set<String> set = jedis.smembers("set");
        System.out.println(set);

        // 删除数据
        jedis.srem("set", "1", "C");


        // 释放资源
        jedis.close();
    }
}

1.1.6 操作 sortedset

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 操作 sortedset
 */
public class JedisTest {

    @Test
    public void textZset() {
        // 创建连接, 空参默认 "localhost", 6379
        Jedis jedis = new Jedis();

        // set 添加数据
        jedis.zadd("zset", 60, "1");
        jedis.zadd("zset", 70, "3");
        jedis.zadd("zset", 80, "2");
        jedis.zadd("zset", 40, "a");

        // 获取数据
        Set<String> zset = jedis.zrange("zset", 0, -1);
        System.out.println(zset);

        // 删除数据
        jedis.zrem("zset", "1");


        // 释放资源
        jedis.close();
    }
}

1.2 Jedis 连接池

1.2.1 获取 Jedis 连接池

代码语言:javascript
复制
/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/9/28
 * @description Jedis 连接池
 */
public class JedisTest {

    @Test
    public void textPool() {
        // 配置 Jedis 连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

        // 创建 Jedis 连接池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,"localhost", 6379);

        // 获取连接
        Jedis jedis = jedisPool.getResource();

        System.out.println(jedis);

        jedis.close();
    }
}

1.2.2 连接池配置

代码语言:javascript
复制
# 最大活动对象数    
redis.pool.maxTotal=1000   

# 最大能够保持 idel 状态的对象数     
redis.pool.maxIdle=100 

# 最小能够保持 idel 状态的对象数  
redis.pool.minIdle=50   

# 当池内没有返回对象时,最大等待时间   
redis.pool.maxWaitMillis=10000   

# 当调用 borrow Object 方法时,是否进行有效性检查   
redis.pool.testOnBorrow=true   

# 当调用 return Object 方法时,是否进行有效性检查   
redis.pool.testOnReturn=true 

# “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为 -1
redis.pool.timeBetweenEvictionRunsMillis=30000 

# 向调用者输出“链接”对象时,是否检测它的空闲超时
redis.pool.testWhileIdle=true 

# 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为 3
redis.pool.numTestsPerEvictionRun=50
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 Jedis 快速使用
    • 1.1.1 基本使用
      • 1.1.2 操作 string
        • 1.1.3 操作 hash
          • 1.1.4 操作 list
            • 1.1.5 操作 set
              • 1.1.6 操作 sortedset
              • 1.2 Jedis 连接池
                • 1.2.1 获取 Jedis 连接池
                  • 1.2.2 连接池配置
                  相关产品与服务
                  云数据库 Redis®
                  腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档