Maison  >  Article  >  base de données  >  Apprentissage Redis : utilisation de base de Jedis

Apprentissage Redis : utilisation de base de Jedis

WBOY
WBOYavant
2022-07-04 13:53:141738parcourir

Cet article vous apporte des connaissances pertinentes sur Redis. Il organise principalement les problèmes liés à l'utilisation de base des Jedis, y compris les opérations de base des Jedis, l'utilisation des pools de connexions Jedis, etc. tout le monde.

Apprentissage Redis : utilisation de base de Jedis

Apprentissage recommandé : Tutoriel vidéo Redis

1. Introduction à Jedis

Jedis = Java + Redis

Redis peut non seulement être utilisé à l'aide de commandes, mais les langages courants disposent désormais d'un support API. , tels que Java, C#, C++, PHP, Node.js, Go, etc. Certains clients Java sont répertoriés sur le site officiel, notamment Jedis, Redisson, Jredis, JDBC-Redis, etc. Parmi eux, Jedis et Redisson sont officiellement recommandés.

Pour utiliser Jedis pour faire fonctionner Redis, vous devez importer le package jar comme suit :

2 Opérations de base de Jedis

2.1 API communes pour les objets Jedis

Remarque : chaque méthode est le nom de la commande dans redis. et les paramètres de la méthode sont les paramètres de la commande

nouveau Jedis(hôte, port)set(clé, valeur) Ajouter une clé de chaîne et une valeurchamp clé de type hachage- value hget(key,field)obtenir sa valeur par lpush(touche ,valeurs)Ajouter une clé de type lpop(key)Pop un élément de gauche

Créé

Connexion Jedis, paramètres : nom d'hôte, numéro de port 6379

get(key)

Obtenir la valeur de la clé spécifiée

del(clé)

Supprimer la clé et la valeur spécifiées

hset(clé, champ, valeur)

Ajouter un

hash key-field

liste et un élément à partir de la gauche

rpop(key)

Pop un élément de droite

close()

Fermer la connexion

        2.2 Opérations de base de Jedis

Étapes de fonctionnement :

Créez un objet Jedis, spécifiez l'adresse du serveur et le numéro de port

Écrivez

définissez les données de type chaîne sur le serveur, personne = Zhang San

lpush pour ajouter des données de type liste , villes = Zhuhai, Shenzhen, Guangzhou

Lisez les données ci-dessus à partir du serveur et imprimez le résultat

obtenez la valeur de la chaîne

lrange obtenez tous les éléments de la liste

Fermez l'objet Jedis et relâchez le ressources

Via le client Vérifiez s'il y a des données dans la base de données

Sortie de la console :

Dans la base de données

Code :

package com.itheima.jedis;

import redis.clients.jedis.Jedis;

import java.util.List;

/**
 * 使用Jedis向redis中添加string和list,读取它们的值
 */
public class Demo1 {

    public static void main(String[] args) {
        //创建Jedis连接对象
        Jedis jedis = new Jedis("localhost", 6379);
        //添加string类型
        jedis.set("person", "张三");
        //添加list类型
        jedis.lpush("cities", "广州","上海","东莞");
        //读取string类型
        String person = jedis.get("person");
        //读取list类型
        List<String> cities = jedis.lrange("cities", 0, -1);
        //输出到控制器上
        System.out.println("person:" + person);
        System.out.println("cities:" + cities);
        //关闭连接对象
        jedis.close();
    }

}

3. Utilisation du pool de connexion Jedis

3.1 Concepts de base de Pool de connexion Jedis

La création et la destruction des ressources de connexion Jedis consomment beaucoup de performances du programme, jedis nous fournit donc la technologie de pool de connexion Jedis jedis

Le pool de connexion initialise certains objets de connexion et les stocke dans le pool de connexion. lors de sa création. Ce n'est pas nécessaire lors de l'utilisation des ressources de connexion jedis. Créez vous-même un objet jedis, mais obtenez une ressource du pool de connexion pour effectuer des opérations Redis. Après utilisation, il n'est pas nécessaire de détruire la ressource de connexion jedis,

mais de renvoyer la ressource dans le pool de connexion pour qu'elle puisse être utilisée par d'autres requêtes.

3.2API du pool de connexion Jedis

Créez un objet de configuration et utilisez la méthode de constructeur sans paramètreDéfinissez le nombre maximum de connexions dans le pool de connexionsDéfinissez le temps d'attente maximum pour obtenir l'objet de connexion Jedis

Classe de configuration JedisPoolConfig

Description de la fonction

JedisPoolConfig()

void setMaxTotal()

vide setMaxWaitMillis()

Créer un pool de connexionsgez un objet de connexion Jedis à partir du pool de connexionMéthode de fermeture du pool de connexions, généralement le pool de connexions n'est pas fermé

        3.3JedisPool的基本使用

需求:

使用连接池优化jedis操作

开发步骤

创建连接池配置对象,设置最大连接数10,设置用户最大等待时间2000毫秒

通过配置对象做为参数,创建连接池对象

从连接池里面获取jedis连接对象,执行redis命令。

执行redis命令sadd写入set集合类型的数据:students=白骨精,孙悟空,猪八戒

执行redis命令smembers读取集合中的数据

输出读取的数据

关闭连接对象(通常连接池不关闭)

运行效果

执行代码

package com.itheima.jedis;

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

import java.util.Set;

/**
 * 创建Jedis连接池
 */
public class Demo2 {

    public static void main(String[] args) {
        //1)	创建连接池配置对象,设置最大连接数10,设置用户最大等待时间2000毫秒
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(10);
        config.setMaxWaitMillis(2000);
        //2)	通过配置对象做为参数,创建连接池对象
        JedisPool pool = new JedisPool(config, "localhost", 6379);
        //3)	从连接池里面获取jedis连接对象,执行redis命令。
        Jedis jedis = pool.getResource();
        //4)	执行redis命令sadd写入set集合类型的数据:students=白骨精,孙悟空,猪八戒
        jedis.sadd("students", "白骨精", "孙悟空", "猪八戒");
        //5)	执行redis命令smembers读取集合中的数据
        Set<String> students = jedis.smembers("students");
        //6)	输出读取的数据
        System.out.println(students);
        //7)	关闭连接对象(通常连接池不关闭)
        jedis.close();
        pool.close();
    }
}

4.案例:编写jedis连接池工具类

        4.1相应API的学习

java.util.ResourceBundle类是专门用于:读取类路径下Properties配置文件的类

Je cours de piscine de connexion disP ool

Description

JedisPool(objet de configuration, nom du serveur, numéro de port)

Paramètre 1 : L'objet de configuration ci-dessus, paramètre 2: nom du serveur, paramètre 3: 6379

Jedis getResource ()

void close()

java.util.ResourceBundle类

功能

static ResourceBundle getBundle("配置基名")

通过自己的静态方法创建ResourceBundle对象

参数:放在src下.properties文件。参数中不用写扩展名,只要有主名就可以了

String getString("键名")

通过键得到值

案例:得到druid.properties中的url属性

package com.itheima.jedis;

import java.util.ResourceBundle;

/**
 * 读取属性文件
 */
public class Demo3 {

    public static void main(String[] args) {
        //得到资源绑定对象
        ResourceBundle bundle = ResourceBundle.getBundle("druid");
        System.out.println(bundle.getString("url"));
    }

}

        4.2连接池工具类的实现

需求:

实现连接池工具类,通过工具类得到Jedis连接对象,配置参数写在属性文件中

调用工具类,对Redis数据库进行操作

执行效果:

实现步骤:

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

创建静态成员变量JedisPool对象

在静态代码块中,读取src下的配置文件,得到ResourceBundle对象

得到上面的四个参数,其中host是字符串类型,其它参数要转成整数类型

实例化配置对象,实例化连接池对象

编写静态方法getJedis()返回Jedis对象

创建hash对象:键employee,添加字段名:name,值:NewBoy;字段名: salary,值:3000

使用hgetall读取hash对象输出

关闭jedis对象

jedis.properties配置文件

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

JedisUtils.java

package com.itheima.utils;

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

import java.util.ResourceBundle;

/**
 * 连接池工具类
 */
public class JedisUtils {

    //创建一个连接对象
    private static JedisPool pool;

    static {
        //创建连接池的配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //设置最大连接数和最长等待时间
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");
        //得到配置文件中的属性值
        String host = bundle.getString("host");
        int port = Integer.parseInt(bundle.getString("port"));
        int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
        int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
        //设置配置对象的参数
        config.setMaxTotal(maxTotal);
        config.setMaxWaitMillis(maxWaitMillis);
        //创建连接池对象
        pool = new JedisPool(config, host, port);
    }

    /**
     * 得到redis连接对象
     * @return
     */
    public static Jedis getJedis() {
        return pool.getResource();
    }

}

使用工具类:

package com.itheima.jedis;

import com.itheima.utils.JedisUtils;
import redis.clients.jedis.Jedis;

import java.util.Map;

/**
 * 使用工具类
 */
public class Demo4 {

    public static void main(String[] args) {
        //从工具类中得到Jedis对象
        Jedis jedis = JedisUtils.getJedis();
        //创建hash对象:键employee,添加字段名:name,值:NewBoy;字段名: salary,值:3000
        jedis.hset("employee", "name","NewBoy");
        jedis.hset("employee", "salary","3000");
        //使用hgetall读取hash对象输出
        Map<String, String> employee = jedis.hgetAll("employee");
        System.out.println(employee);
        //关闭jedis对象
        jedis.close();
    }

}

推荐学习:Redis视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer