您的位置:首页 > 数据库 > Redis

redis 学习笔记(2)-client端示例代码

2015-04-13 01:01 537 查看
转载自:/article/4607361.html

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

一、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>


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     }


输出:

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>


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



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 }


注: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 }


输出:

3

1

2

--------------------

A

B

C

--------------------

X

Y

Z

--------------------

3

X

2

--------------------

Y

Z

--------------------

C

B

A

Redisson的优势:对集合支持比较完善,但是不支持String这类简单类型,不支持keys操作

实际使用中,上述二种client建议结合使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: