java代码简单操作Redis数据Jedis jar

    技术2022-07-15  70

    java操作Redis数据API->Jedis

    Jedis引入

    作为java码农,如何在代码中操作Redis呢?

    Jedis的介绍

    Redis不仅可以使用命令来操作,现在基本上主流的语言都有API支持,比如Java、C#、C++、PHP、Node.js、Go等。

    在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等其中官方推荐使用Jedis和Redisson。

    Jedis操作redis需要导入jar包如下:

    Jedis类常用方法

    每个方法就是redis中的命令名,方法的参数就是命令的参数。每个Jedis对象似于JDBC中Connection对象,获取一个Jedis对象本质上就是获取一个连接对象。 连接和关闭功能new Jedis(String host, int port)创建一个连接对象参数1:主机名参数2:端口号 6379void close()关闭连接 对string操作的方法说明set(String key,String value)添加字符串类型的键和值String get(String key)通过键获取值del(String … keys)删除一个或多个键和值 对list操作的方法说明lpush(String key,String…values)从左边添加1个或多个元素List<String> lrange(String key,long start,long end)获取一个范围内所有的元素

    案例:Jedis的基本操作

    目标

    使用Jedis上面的方法来访问Redis,向服务器中写入字符串,并且取出打印控制台上。

    步骤

    创建Jedis对象,指定服务器地址和端口号向服务器写入,set字符串类型的数据,person=张三从服务器中读取上面的数据打印输出,get得到字符串的值关闭Jedis对象,释放资源通过客户端查看数据库中是否有数据

    代码

    package com.fs; import redis.clients.jedis.Jedis; /** * Jedis的基本使用 */ public class Demo1Base { public static void main(String[] args) { //1.创建Jedis连接对象 Jedis jedis = new Jedis("localhost", 6379); //2.向服务器添加1个字符串类型的键和值 jedis.set("book","人鬼情喂鸟"); //3.从服务器中通过键获取值 String book = jedis.get("book"); //4.关闭连接 jedis.close(); //5.打印输出到控制台 System.out.println(book); } }

    Jedis连接池的使用

    目标

    Jedis连接池相关的API案例:使用Jedis连接池

    jedis连接池的基本概念

    ​ jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的连接池技术,jedis连接池在创建时初始化一些连接对象存储到连接池中,使用jedis连接资源时不需要自己创建jedis对象,而是从连接池中获取一个资源进行redis的操作。使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。

    Jedis连接池API

    用于创建连接池的配置信息

    JedisPoolConfig配置类功能说明JedisPoolConfig()构造方法,创建一个配置对象void setMaxTotal()连接池中最大连接数void setMaxWaitMillis()设置最长等待时间,单位是毫秒 JedisPool连接池类说明JedisPool(配置对象,服务器名,端口号)构造方法,创建连接池的类参数1:上面的配置对象参数2:服务器名参数3:端口号Jedis getResource()从连接池中获取一个创建好的连接对象,返回Jedis对象

    JedisPool的基本使用

    需求:

    ​ 使用连接池优化jedis操作,从连接池中得到一个创建好的Jeids对象,并且使用这个Jedis对象。向Redis数据库写入一个set集合,并且取出集合。打印到控制台,并且查看数据库中信息。

    开发步骤

    创建连接池配置对象,设置最大连接数10,设置用户最大等待时间2000毫秒通过配置对象做为参数,创建连接池对象从连接池里面获取jedis连接对象,执行redis命令。执行redis命令写入list集合执行redis命令读取list集合输出读取的数据关闭连接对象(通常连接池不关闭)

    执行代码

    package com.fs; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.List; /** * Jedis连接池的基本使用 */ public class Demo2Pool { public static void main(String[] args) { //1.创建连接池的配置对象 JedisPoolConfig config = new JedisPoolConfig(); //2.设置连接池的参数 config.setMaxTotal(10); //最大连接数 config.setMaxWaitMillis(2000); //最长等待时间为2秒钟 //3.创建连接池,使用上面配置对象 JedisPool pool = new JedisPool(config,"localhost", 6379); //4.从连接池中获取连接对象 Jedis jedis = pool.getResource(); //5.使用连接对象 jedis.lpush("students", "孙悟空", "猪八戒", "白骨精"); List<String> students = jedis.lrange("students", 0, -1); System.out.println(students); //6.关闭连接对象 jedis.close(); } }

    ResourceBundle类的使用

    作用

    用于简化properties属性文件的读取

    需求

    使用ResourceBundle类得到jedis.properties中的port属性,并且输出

    代码

    jedis.properties的内容

    # 连接池的最大连接数 maxTotal=10 # 最长等待时间为2秒钟 maxWaitMillis=2000 # 服务器名字 host=localhost # 端口号 port=6379

    使用ResourceBundle类:

    package com.fs; import java.util.ResourceBundle; public class Demo3Resource { public static void main(String[] args) { //1. 通过静态方法读取属性文件,参数是:属性文件的主文件名,没有扩展名 ResourceBundle bundle = ResourceBundle.getBundle("jedis"); //2. 获取属性值,通过键获取值 String host = bundle.getString("host"); //3.输出值 localhost System.out.println(host); } }

    Jedis连接池工具类的实现

    实现步骤

    配置文件

    在src目录下创建连接池的工具类: jedis.properties

    工具类创建

    创建静态成员变量JedisPool对象在静态代码块中,读取src下的配置文件,得到ResourceBundle对象得到上面的四个参数,其中host是字符串类型,其它参数要转成整数类型实例化配置对象,实例化连接池对象编写静态方法getJedis()返回Jedis对象

    使用工具类

    创建string对象读取string对象关闭jedis对象

    代码

    jedis.properties配置文件

    # 主机名 host=localhost # 端口号 port=6379 # 最大连接数 maxTotal=20 # 最长等待时间 maxWaitMillis=3000

    JedisUtils.java

    package com.fs.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.ResourceBundle; /** * Jedis连接池工具类 */ public class JedisUtils { private static JedisPool pool; //在静态代码块中创建连接池 static { //读取配置文件 ResourceBundle bundle = ResourceBundle.getBundle("jedis"); //读取属性值 int maxTotal = Integer.parseInt(bundle.getString("maxTotal")); int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis")); int port = Integer.parseInt(bundle.getString("port")); String host = bundle.getString("host"); //创建连接池配置对象 JedisPoolConfig config = new JedisPoolConfig(); //设置连接池的参数 config.setMaxTotal(maxTotal); config.setMaxWaitMillis(maxWaitMillis); //创建连接池 pool = new JedisPool(config, host, port); } /** * 获取连接对象 */ public static Jedis getJedis() { return pool.getResource(); } }

    使用工具类

    package com.fs; import com.itheima.utils.JedisUtils; import redis.clients.jedis.Jedis; //使用连接池工具类 public class Demo4Use { public static void main(String[] args) { //从连接池中获取连接对象 Jedis jedis = JedisUtils.getJedis(); //添加键和值 jedis.set("car", "BWM"); //取出 String car = jedis.get("car"); //输出 System.out.println(car); //关闭连接 jedis.close(); } }
    Processed: 0.009, SQL: 9