|
1 package deifeng.testRedis;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Set;
6
7 import org.junit.Test;
8
9 import redis.clients.jedis.BinaryClient.LIST_POSITION;
10 import redis.clients.jedis.Jedis;
11 import redis.clients.jedis.Tuple;
12
13 /**
14 *
15 * @author Administrator
16 * timer:2017年2月18日下午11:02:24
17 * intro:TODO
18 */
19 public>
20 //创建redis 的客户端连接,绑定主机和端口号
21 private static String host="127.0.0.1";
22 private static int port =6379;
23 private Jedis jedis = TestCRUD.getRedisUtil(host, port);
24
25
26
27 //测试连接
28 public void testConn(){
29 System.out.println(jedis);
30 }
31
32 /**
33 * 测试redis的五大基本类型操作
34 */
35 /**
36 * String 类型的简单命令
37 *
38 * 一 -------多
39 * set mset
40 */
41 @Test
42 public void testString(){
43 //获取jedis对象 返回key=hhy2的type类型
44 /*String type = jedis.type("hhy2");
45 System.out.println(type);*/
46 /**
47 * 存储一个数据
48 *
49 * set -------mset
50 */
51 //jedis.flushDB(); flushAll
52 String key1 = jedis.set("hhy", "hhy");
53 System.out.println(jedis.get("hhy"));
54 //是在key不存在,才会执行set操作,如果key存在,则此操作无效,返回值1代表成功,0代表失败
55 //setnx ------msetnx
56 Long setnx = jedis.setnx("hhy1", "zs");
57 System.out.println(setnx);//1 代表插入的key在redis库中不存在
58 //setex ---- mstex
59 jedis.setex("hhy", 100, "zsq");//100有效期
60
61 Long tt = jedis.ttl("hhy");
62 System.out.println(tt);
63 /**
64 * 存储多个数据
65 * mget key1 value1 key2 value2...
66 * 类似于set对一个数据存储的语法
67 */
68
69
70 /**
71 * getrange
72 * getrange key star end
73 *
74 * 解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1,
75 * 一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。
76 *
77 * setrange
78 * 用value重写key值的一部分,偏移量由offset指定
79 *
80 */
81
82 jedis.set("test", "test123456");
83 System.out.println(jedis.getrange("test", 2, 5));
84
85
86 /**
87 * getset
88 */
89 String getset = jedis.getSet("hhy", "123");
90 System.out.println(getset);
91
92 Long ll = jedis.append("hhy", "123");//添加以后的长度
93
94
95 /**
96 * 递增/减
97 * incr / incrby ++ / decr /decrby --
98 */
99 Long incr = jedis.incr("21");
100 System.out.println(incr);
101
102 /**
103 * 删除key
104 * del
105 */
106 jedis.del("hhy");
107 System.out.println("=====================");
108 Set<String> keys = jedis.keys("*");
109 for (String string : keys) {
110 System.out.println(string +"---->"+jedis.get(string));
111 }
112
113 }
114
115
116
117 /**
118 * redis ---- List
119 * lpush rpush linsert 添加命令
120 * lpop rpop 删除命令
121 * lrange llen lindex 查询命令
122 * lset 修改命令
123 * rpoplpush 两个列表A,B,将A列表的尾元素添加到B列表的头元素中
124 */
125 @Test
126 public void testList(){
127 jedis.flushDB();//清空当前库
128 //添加一个list集合
129 /**
130 * 如果保证顺序
131 * left 降序
132 * right 顺序
133 */
134 jedis.lpush("zs", "3","2","1");//左侧插入一个list集合
135 jedis.rpush("li", "7","8","9");
136 /*
137 //遍历li集合
138 List<String> list = jedis.lrange("li", 0, -1);
139 for (String str : list) {
140 System.out.println(str);
141 }
142
143 System.out.println("============");
144 //linsert插入一条数据
145 jedis.linsert("zs", LIST_POSITION.AFTER, "2", "12");
146 //遍历li集合
147 List<String> zs = jedis.lrange("zs", 0, -1);
148 for (String str : zs) {
149 System.out.println(str);
150 }
151
152 //del
153 *//**
154 * lpop rpop 分别代表是从左|右侧删除一条数据
155 * 并且把删除的数据值返回过来
156 *//*
157 System.out.println(jedis.lpop("zs"));
158
159
160 *//**
161 * 查询命令 lindex llen
162 *//*
163
164 System.out.println(jedis.lindex("li", 1));
165 System.out.println(jedis.lset("zs", 0, "hhy"));
166
167 */
168 jedis.rpoplpush("li", "zs");
169 System.out.println("--------------");
170 List<String> zs1 = jedis.lrange("zs", 0, -1);
171 for (String string : zs1) {
172 System.out.println(string);
173 }
174 }
175
176
177
178 /**
179 * Redis -- Set
180 */
181 @Test
182 public void testSet(){
183 jedis.flushDB();
184 jedis.sadd("ss", "1","2","3");
185 System.out.println(jedis.smembers("ss"));
186 //在客户端命令中。存在是1 不存在是0
187 System.out.println(jedis.sismember("ss", "2"));
188 //set集合 的大小
189 System.out.println(jedis.scard("ss"));
190 //返回set集合中随机数据
191 System.out.println(jedis.srandmember("ss"));
192 //随即返回redis 中的key
193 System.out.println(jedis.randomKey());
194
195 /**
196 * spop随机删除set集合的一个数据
197 * 集合之间的 操作
198 *
199 * sinter 交集
200 * sunion 并集
201 * sdiff 差集
202 * smove 把 1 集合转移到 2中
203 * >smove youSet mySet 4 ---将youSet中的数据4移除的同时将数据4添加到mySet中
204 */
205 jedis.sinter("可扩展的key,求交集");
206 jedis.sunion("可扩展的key,求并集");
207 jedis.sdiff("可扩展的key,求差集");
208
209 }
210
211 /**
212 * sorted-sort
213 *
214 * zadd 一次只能添加一个
215 */
216 @Test
217 public void testSortedSort(){
218 jedis.flushDB();
219 jedis.zadd("hhy", 100, "zs");
220 jedis.zadd("hhy", 101, "zs1");
221 jedis.zadd("hhy", 102, "zs2");
222 jedis.zadd("hhy", 103, "zs3");
223 //获取zset集合中的值 --- 是一个集合 asc
224 /**zrange asc
225 * zrevrange desc
226 */
227 Set<String> set = jedis.zrange("hhy", 0, -1);
228 for (String str : set) {
229 //获取分数
230 System.out.println(str);
231 //通过这个集合中的值,查询每一个值所对应的分数
232 Double zscore = jedis.zscore("hhy", str);
233 System.out.println(zscore);
234 }
235 //可以直接获取到值--分数的对应关系,封装到tuple对象中
236 Set<Tuple> set2 = jedis.zrangeWithScores("hhy", 0, -1);
237 for (Tuple tuple : set2) {
238 System.out.println(tuple.getScore()+" --->"+tuple.getElement());
239 }
240 //查看zset集合中的数据zs1是第一名
241 Long zrank = jedis.zrank("hhy", "zs1");
242 System.out.println(zrank);
243 }
244
245 /**
246 * hash类型的操作
247 * 基本命令的操作
248 */
249 @Test
250 public void testHash(){
251 /**
252 * 如何在user中再存一个对象?
253 */
254 jedis.hset("user", "name", "hhy");
255 jedis.hset("user", "age", "25");
256 //jedis.hmset("u", new HashMap<String,String>());
257 System.out.println(jedis.hget("user", "name"));
258 //查询hash中的所有filed和value
259 jedis.hkeys("user");
260 jedis.hvals("user");
261 //s设置多个值和获取多个值 hmset hmget
262
263
264 //获取所有的filed
265 jedis.hgetAll("user");
266 //当前有多少数据
267 jedis.hlen("user");
268 }
269
270 /**
271 * 创建redis的连接对象
272 * @param host 主机
273 * @param port 端口号
274 * @return jedis对象
275 */
276 public static Jedis getRedisUtil(String host,int port){
277 return new Jedis(host,port);
278 }
279
280
281 } |
|