Rumah Java javaTutorial Java中使用Jedis操作Redis的示例代码

Java中使用Jedis操作Redis的示例代码

Jan 21, 2017 pm 04:26 PM

使用Java操作Redis需要jedis-2.1.0.jar,下载地址:jedis-2.1.0.jar

如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:commons-pool-1.5.4.jar 

package com.test;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import org.junit.Before;
import org.junit.Test;
 
import redis.clients.jedis.Jedis;
 
public class TestRedis {
  private Jedis jedis; 
   
  @Before
  public void setup() {
    //连接redis服务器,192.168.0.100:6379
    jedis = new Jedis("192.168.0.100", 6379);
    //权限认证
    jedis.auth("admin"); 
  }
   
  /**
   * redis存储字符串
   */
  @Test
  public void testString() {
    //-----添加数据---------- 
    jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin 
    System.out.println(jedis.get("name"));//执行结果:xinxin 
     
    jedis.append("name", " is my lover"); //拼接
    System.out.println(jedis.get("name")); 
     
    jedis.del("name"); //删除某个键
    System.out.println(jedis.get("name"));
    //设置多个键值对
    jedis.mset("name","liuling","age","23","qq","476777XXX");
    jedis.incr("age"); //进行加1操作
    System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
     
  }
   
  /**
   * redis操作Map
   */
  @Test
  public void testMap() {
    //-----添加数据---------- 
    Map<String, String> map = new HashMap<String, String>();
    map.put("name", "xinxin");
    map.put("age", "22");
    map.put("qq", "123456");
    jedis.hmset("user",map);
    //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List 
    //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数 
    List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
    System.out.println(rsmap); 
  
    //删除map中的某个键值 
    jedis.hdel("user","age");
    System.out.println(jedis.hmget("user", "age")); //因为删除了,所以返回的是null 
    System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数2 
    System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true 
    System.out.println(jedis.hkeys("user"));//返回map对象中的所有key 
    System.out.println(jedis.hvals("user"));//返回map对象中的所有value 
  
    Iterator<String> iter=jedis.hkeys("user").iterator(); 
    while (iter.hasNext()){ 
      String key = iter.next(); 
      System.out.println(key+":"+jedis.hmget("user",key)); 
    } 
  }
   
  /** 
   * jedis操作List 
   */
  @Test
  public void testList(){ 
    //开始前,先移除所有的内容 
    jedis.del("java framework"); 
    System.out.println(jedis.lrange("java framework",0,-1)); 
    //先向key java framework中存放三条数据 
    jedis.lpush("java framework","spring"); 
    jedis.lpush("java framework","struts"); 
    jedis.lpush("java framework","hibernate"); 
    //再取出所有数据jedis.lrange是按范围取出, 
    // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有 
    System.out.println(jedis.lrange("java framework",0,-1)); 
     
    jedis.del("java framework");
    jedis.rpush("java framework","spring"); 
    jedis.rpush("java framework","struts"); 
    jedis.rpush("java framework","hibernate"); 
    System.out.println(jedis.lrange("java framework",0,-1));
  } 
   
  /** 
   * jedis操作Set 
   */
  @Test
  public void testSet(){ 
    //添加 
    jedis.sadd("user","liuling"); 
    jedis.sadd("user","xinxin"); 
    jedis.sadd("user","ling"); 
    jedis.sadd("user","zhangxinxin");
    jedis.sadd("user","who"); 
    //移除noname 
    jedis.srem("user","who"); 
    System.out.println(jedis.smembers("user"));//获取所有加入的value 
    System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素 
    System.out.println(jedis.srandmember("user")); 
    System.out.println(jedis.scard("user"));//返回集合的元素个数 
  } 
  
  @Test
  public void test() throws InterruptedException { 
    //jedis 排序 
    //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) 
    jedis.del("a");//先清除数据,再加入数据进行测试 
    jedis.rpush("a", "1"); 
    jedis.lpush("a","6"); 
    jedis.lpush("a","3"); 
    jedis.lpush("a","9"); 
    System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1] 
    System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //输入排序后结果 
    System.out.println(jedis.lrange("a",0,-1)); 
  } 
   
  @Test
  public void testRedisPool() {
    RedisUtil.getJedis().set("newname", "中文测试");
    System.out.println(RedisUtil.getJedis().get("newname"));
  }
}
Salin selepas log masuk

Redis连接池:

package com.test;
 
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
 
public final class RedisUtil {
   
  //Redis服务器IP
  private static String ADDR = "192.168.0.100";
   
  //Redis的端口号
  private static int PORT = 6379;
   
  //访问密码
  private static String AUTH = "admin";
   
  //可用连接实例的最大数目,默认值为8;
  //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
  private static int MAX_ACTIVE = 1024;
   
  //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
  private static int MAX_IDLE = 200;
   
  //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
  private static int MAX_WAIT = 10000;
   
  private static int TIMEOUT = 10000;
   
  //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
  private static boolean TEST_ON_BORROW = true;
   
  private static JedisPool jedisPool = null;
   
  /**
   * 初始化Redis连接池
   */
  static {
    try {
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxActive(MAX_ACTIVE);
      config.setMaxIdle(MAX_IDLE);
      config.setMaxWait(MAX_WAIT);
      config.setTestOnBorrow(TEST_ON_BORROW);
      jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
   
  /**
   * 获取Jedis实例
   * @return
   */
  public synchronized static Jedis getJedis() {
    try {
      if (jedisPool != null) {
        Jedis resource = jedisPool.getResource();
        return resource;
      } else {
        return null;
      }
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
   
  /**
   * 释放jedis资源
   * @param jedis
   */
  public static void returnResource(final Jedis jedis) {
    if (jedis != null) {
      jedisPool.returnResource(jedis);
    }
  }
}
Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多Java中使用Jedis操作Redis的示例代码相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Apr 19, 2025 pm 09:51 PM

Apabila menggunakan tkmybatis untuk pertanyaan pangkalan data, bagaimana dengan anggun mendapatkan nama pembolehubah kelas entiti untuk membina keadaan pertanyaan adalah masalah biasa. Artikel ini akan ...

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

See all articles