程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

Java操作Redis

发布于2021-06-14 10:00     阅读(672)     评论(0)     点赞(6)     收藏(5)


Java操作Redis

一、Java使用Jedis

1.Java操作Redis的选择
  • 需要redis的一个java客户端jedis。
  • jedis是客户端,而reids是服务器,使用jedis这个java客户端操作redis数据库。
  • 2.9.0 jar 版本下载: jedis-2.9.0.jar
  • 在你的 classpath 中包含该驱动包。
2.Jedis的使用
import redis.clients.jedis.Jedis;

public class Main {

    public static void main(String[] args) {
        String host ="127.0.0.1";
        int port = 6379;
        int timeout = 1000;//超时时间,1秒超时
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis(host,port,timeout);
        // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
        // jedis.auth("123456");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
    }
}

运行以上 Java 程序
在这里插入图片描述

3.连接池的使用

连接池的作用:

  • 限定了最大并发连接数,防止Redis服务由于连接过多而崩溃。

  • 避免重复创建和关闭连接,节约内存资源,和时间资源。

连接池参数设置:

  • 最小连接数(空闲最大连接数)

  • 最大连接数(忙时最大连接数)

  • 超时时间(创建连接超时时间)

  • 设置连接畅通时机

在这里插入图片描述

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import org.junit.Test;

public class RedisTest {

    /*
    使用连接池访问Redis
    1.创建连接池配置对象
    2.配置
        忙时:最大连接数
        闲时:最大连接数
        最大等待时间
        获取连接池检查配置
    3.通过连接池配置对象创建连接池jedispool
    4.通过连接池获取连接
    5.执行操作
    6.释放连接
    7.摧毁连接池-如果是真正项目中它应该是一个受spring管理的单例
    */
    @Test
    public void testRedis() throws Exception{
        //1.创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2.配置
        config.setMaxIdle(8);//忙时:最大连接数
        config.setMaxTotal(10);//闲时:最大连接数
        config.setMaxWaitMillis(1*1000); //创建连接超时
        config.setTestOnBorrow(true);//获取连接是测试连接是否畅通
        //3.创建连接池
        JedisPool pool = new JedisPool(config, "127.0.0.1",6379, 1000);
        //4.通过连接池获取连接
        Jedis jedis = pool.getResource();
        //5.执行操作
        jedis.set("name","木研");
        System.out.println("获取值:" + jedis.get("name"));
        //6.释放连接
        jedis.close(); //底层做了兼容,如果是连接池操作就是释放,如果是连接操作就是关闭
        //7.摧毁连接池
        pool.destroy();
    }

}

运行以上 Java 程序
在这里插入图片描述

二、Jedis操作Redis

使用jedis来操作redis的key和value,而value有很多种类型,和命令操作一样。

1.String的操作
import redis.clients.jedis.Jedis;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        System.out.println(jedis.set("name","zhangsan"));//新增
        System.out.println(jedis.get("name"));//获取
        System.out.println(jedis.set("name","zhangsan1"));//修改
        System.out.println(jedis.get("name"));//获取
        System.out.println(jedis.del("name"));//删除
    }
}
2.List的操作
import redis.clients.jedis.Jedis;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        jedis.lpush("students1","1","2","3","5","6");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("students1", 0 ,3);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
    }
}
3.Set的操作
import redis.clients.jedis.Jedis;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        jedis.sadd("students2","a1","b1","c1","b1");
        System.out.println(jedis.smembers("students2"));
    }
}
4.ZSet的操作
import redis.clients.jedis.Jedis;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        jedis.zadd("students3",166.3,"a1");
        System.out.println(jedis.zrange("students3",0,-1));
    }
}
5.Hash的操作
import redis.clients.jedis.Jedis;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        jedis.hset("students4","student","zhangsan");
        System.out.println(jedis.hget("students3", "student"));
    }
}
6.key的操作
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        // 获取数据并输出
        Set<String> keys = jedis.keys("*");
        Iterator<String> it=keys.iterator() ;
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key);
        }
    }
}

三、Jedis排序

import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;

public class Main {

    /*
    * sort排序
    *   数字不用加SortingParams
    *   字母需要加SortingParams,并且是指ASCII值排序
    * */
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("127.0.0.1",6379,1000);
        //清空当前数据库中的所有 key
        jedis.flushDB();

        //对数字排序
        jedis.lpush("nums","1","2","3","4","8","5","3","1");
        System.out.println(jedis.sort("nums"));
        SortingParams sortingParams1 = new SortingParams();
        sortingParams1.desc();// 按desc排序
        System.out.println(jedis.sort("nums", sortingParams1));

        //对字母排序
        jedis.lpush("langues","java","php","c++","test","ui");
        SortingParams sortingParams = new SortingParams();
        sortingParams.alpha();//按照字母排序
        sortingParams.desc();
        System.out.println(jedis.sort("langues",sortingParams));
    }

}

在这里插入图片描述

四、Jedis事务

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.Transaction;

import java.util.List;

public class Main {

    /*redis的事务处理,多条命令中有失败也无法将所有指令回滚*/
    public static void main(String[] args) {

        //创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //配置
        config.setMaxIdle(8);//忙时:最大连接数
        config.setMaxTotal(10);//闲时:最大连接数
        config.setMaxWaitMillis(1*1000); //创建连接超时
        config.setTestOnBorrow(true);//获取连接是测试连接是否畅通
        //创建连接池
        JedisPool pool = new JedisPool(config, "127.0.0.1",6379, 1000);
        //通过连接池获取连接
        Jedis jedis = pool.getResource();
        //清空当前数据库中的所有 key
        jedis.flushDB();

        jedis.set("name","ty");
        jedis.set("age","18");
        System.out.println("获取name、age的值:" + jedis.mget("name","age"));

        //开启事务
        Transaction transaction = jedis.multi();
        transaction.incr("name");
        transaction.incr("age");

        //提交事务
        List<Object> exec = transaction.exec();
        System.out.println(exec);
        System.out.println("获取name、age的值:" + jedis.mget("name","age"));

        //关闭连接
        jedis.close();
        //摧毁连接池
        pool.destroy();

    }

}

在这里插入图片描述

原文链接:https://blog.csdn.net/qq_45988641/article/details/117768515



所属网站分类: 技术文章 > 博客

作者:java战神

链接:http://www.javaheidong.com/blog/article/222678/575c95129a9ab30151ef/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)