zoukankan      html  css  js  c++  java
  • redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:JedisRedisson

    一、Jedis的使用

    1         <dependency>
    2             <groupId>redis.clients</groupId>
    3             <artifactId>jedis</artifactId>
    4             <version>2.6.0</version>
    5             <type>jar</type>
    6             <scope>compile</scope>
    7         </dependency>
    View Code

    pom.xml中添加上面的依赖项就行了,下面是示例代码:

     1     @Test
     2     public void testJedis() throws InterruptedException {
     3 
     4         Jedis jedis = new Jedis("10.6.144.xxx", 7030);
     5 
     6         // String测试
     7         System.out.println(jedis.get("foo")); // 首次获取,redis中还没有,返回null
     8 
     9         jedis.set("foo", "bar", "NX", "EX", 1);// 添加缓存项foo,过期时间为1s,只有该项原来不存在时,才添加
    10 
    11         System.out.println(jedis.get("foo"));// bar
    12 
    13         Thread.sleep(1000);// 暂停1s
    14 
    15         System.out.println(jedis.get("foo"));// 已过期,返回null
    16 
    17         jedis.close();
    18     }
    View Code

    输出:

    null
    bar
    null

    Jedis的特点:可以使用String这种简单类型,可以设置缓存过期时间,但官方的文档几乎没有,要用的命令得自已一个个去试。

    另外有一个十分有用的命令: keys

    比如./redis-cli keys * 将返回所有的缓存keys,可用于遍历所有缓存项,Jedis支持keys命令:

            Set<String> keys= jedis.keys("*");
            for (String k : keys) {
                System.out.println(k);
            }

    二、Redisson的使用

    1         <dependency>
    2             <groupId>org.redisson</groupId>
    3             <artifactId>redisson</artifactId>
    4             <version>1.1.5</version>
    5         </dependency>
    View Code

    同样先添加依赖项,然后参考下面的示例代码:

     1     @Test
     2     public void testRedisson() {
     3         Config config = new Config();
     4         config.useSingleServer().setAddress("10.6.144.***:7030");
     5 
     6         Redisson redisson = Redisson.create(config);
     7 
     8         // Set测试
     9         RSet<String> mySet = redisson.getSet("mySet");
    10         if (mySet != null) {
    11             mySet.clear();
    12         }
    13         mySet.add("1");
    14         mySet.add("2");
    15         mySet.add("3");
    16 
    17         RSet<String> mySetCache = redisson.getSet("mySet");
    18 
    19         for (String s : mySetCache) {
    20             System.out.println(s);
    21         }
    22 
    23         System.out.println("--------------------");
    24 
    25         // List测试
    26         RList<SampleBean> myList = redisson.getList("myList");
    27         if (myList != null) {
    28             myList.clear();
    29         }    
    30         
    31         myList.add(new SampleBean("A"));
    32         myList.add(new SampleBean("B"));
    33         myList.add(new SampleBean("C"));
    34 
    35         RList<SampleBean> myListCache = redisson.getList("myList");
    36 
    37         for (SampleBean bean : myListCache) {
    38             System.out.println(bean);
    39         }
    40         
    41         System.out.println("--------------------");
    42         
    43         //Queue测试
    44         RQueue<String> myQueue = redisson.getQueue("myQueue");
    45         if (myQueue != null) {
    46             myQueue.clear();
    47         }
    48         myQueue.add("X");
    49         myQueue.add("Y");
    50         myQueue.add("Z");
    51         
    52         RQueue<String> myQueueCache = redisson.getQueue("myQueue");
    53 
    54         for (String s : myQueueCache) {
    55             System.out.println(s);
    56         }
    57         
    58         System.out.println("--------------------");
    59         
    60         System.out.println(myQueue.size());//3
    61         System.out.println(myQueue.poll());//X
    62         System.out.println(myQueue.size());//2
    63         
    64         System.out.println("--------------------");
    65         
    66         //注:虽然是从myQueue中poll的,但是由于myQueueCache与myQueue实际上是同一个缓存对象,所以下面的循环,也只剩2项
    67         for (String s : myQueueCache) {
    68             System.out.println(s);
    69         }        
    70         System.out.println("--------------------");
    71         
    72         //Deque测试
    73         RDeque<String> myDeque = redisson.getDeque("myDeque");
    74         if (myDeque != null) {
    75             myDeque.clear();
    76         }
    77         myDeque.add("A");
    78         myDeque.add("B");
    79         myDeque.add("C");
    80         
    81         RDeque<String> myDequeCache = redisson.getDeque("myDeque");
    82 
    83         Iterator<String> descendingIterator = myDequeCache.descendingIterator();
    84         
    85         //倒序输出
    86         while (descendingIterator.hasNext()) {
    87             System.out.println(descendingIterator.next());
    88             
    89         }
    90         
    91         redisson.shutdown();
    92     }
    93 
    94 }
    View Code

    注:List中可直接放POJO对象,上面的示例中放了3个SampleBean实例,SampleBean定义如下:

     1 package com.cnblogs.yjmyzz;
     2 
     3 import java.io.Serializable;
     4 
     5 public class SampleBean implements Serializable {
     6 
     7     
     8     private static final long serialVersionUID = -303232410998377570L;
     9 
    10     private String name;
    11 
    12     public SampleBean() {
    13     }
    14 
    15     public SampleBean(String name) {
    16         this.name = name;
    17     }
    18 
    19     public String getName() {
    20         return name;
    21     }
    22 
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26 
    27     public String toString() {
    28         return name;
    29     }
    30 
    31 }
    View Code

    输出:

    3
    1
    2
    --------------------
    A
    B
    C
    --------------------
    X
    Y
    Z
    --------------------
    3
    X
    2
    --------------------
    Y
    Z
    --------------------
    C
    B
    A

    Redisson的优势:对集合支持比较完善,官方文档十分齐全,但是不支持String这类简单类型,不支持keys操作

    实际使用中,上述二种client建议结合使用。

  • 相关阅读:
    1-hadoop中遇到的各种异常
    13-hadoop-入门程序
    12-mapReduce的简介和yarn搭建
    11-hdfs-NameNode-HA-wtihQJM解决单点故障问题
    10-hdfs-hdfs搭建
    redis-java-api
    深度学习优化方法
    tf.nn.embedding_lookup()
    tf.variable_scope()和tf.name_scope()
    tf.Variable()、tf.get_variable()和tf.placeholder()
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/4105731.html
Copyright © 2011-2022 走看看