Redis+Jedis简单应用

cache redis java 

一、jedis的简单应用

1、导入jar包(jedis-2.3.0.jar)

2、实例

 



ES可以和redis一起做缓存吗 redisson jedis一起用吗_redis


1. package
2.   
3. import
4. import
5. import
6. import
7.   
8. import
9. import
10.   
11. import
12.   
13. public class
14.   
15. private
16.       
17. @Before
18. public void
19. new Jedis("127.0.0.1",6379);  
20.     }  
21.       
22. /**添加*/
23. public void
24.         jedis.set(key, value);  
25.     }  
26.       
27. /**拼接*/
28. public void
29.         jedis.append(key, value);  
30.     }  
31.       
32. /**设置多个键值对*/
33. public void
34. "name","t","age","26","qq","123456");  
35.     }  
36.       
37. /**根据key删除*/
38. public void
39.         jedis.del(key);  
40.     }  
41. /**根据key获取Value*/
42. public
43. return
44.     }  
45. /**修改key*/
46. public void
47.         jedis.rename(oldkey, newkey);  
48.     }  
49.       
50. @Test
51. public void
52. "key";  
53. "abc");  
54.         String value = getValue(key);  
55.         System.out.println(value);  
56.     }  
57.       
58. @Test
59. public void
60. "key";  
61.         testAddValue();  
62. "--ccc");  
63.         String value = getValue(key);  
64.         System.out.println(value);  
65.     }  
66.       
67. @Test
68. public void
69.         mset();  
70. "name") + "-" + getValue("age") + "-" +getValue("qq"));  
71.     }  
72.       
73. @Test
74. public void
75. "key1";  
76.         deleteValue(key);  
77.         String value = getValue(key);  
78.         System.out.println(value);  
79.     }  
80. @Test
81. public void
82. "key1";  
83. "key2";  
84. "abc");  
85.         renameKey(key, newkey);  
86.         String value = getValue(newkey);  
87.         System.out.println(value);  
88.     }  
89.       
90. /**Map*/
91. @Test
92. public void
93. new
94. "name", "tzz");  
95. "age", "26");  
96. "qq", "123456");  
97. "user", map);  
98. // 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
99. // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
100. "user", "name", "age", "qq");  
101.         System.out.println(rsmap);  
102.   
103. // 删除map中的某个键值
104. "user", "age");  
105. "user", "age")); // 因为删除了,所以返回的是null
106. "user")); // 返回key为user的键中存放的值的个数2
107. "user"));// 是否存在key为user的记录 返回true
108. "user"));// 返回map对象中的所有key
109. "user"));// 返回map对象中的所有value
110.   
111. "user").iterator();  
112. while
113.             String key = iter.next();  
114. ":" + jedis.hmget("user", key));  
115.         }  
116.     }  
117.       
118. /**操作List */
119. @Test
120. public void
121. // 开始前,先移除所有的内容
122. "test-list");  
123. "test-list", 0, -1));  
124. "test-list", "1");  
125. "test-list", "22");  
126. "test-list", "333");  
127. // 再取出所有数据jedis.lrange是按范围取出,
128. // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
129. "test-list", 0, -1));  
130.   
131. "test-list");  
132. "test-list", "1");  
133. "test-list", "22");  
134. "test-list", "333");  
135. "test-list", 0, -1));  
136.     }  
137.   
138. /**Set*/
139. @Test
140. public void
141. // 添加
142. "test-set", "a","b");  
143. "test-set", "b");  
144. "test-set", "c");  
145. "test-set", "d");  
146. "test-set", "e");  
147. // 移除noname
148. "test-set", "who");  
149. "test-set"));// 获取所有加入的value
150. "test-set", "who"));// 判断 who
151. // 是否是user集合的元素
152. "test-set"));  
153. "test-set"));// 返回集合的元素个数
154.     }  
155.   
156. @Test
157. public void test() throws
158. // jedis 排序
159. // 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
160. "a");// 先清除数据,再加入数据进行测试
161. "a", "1");  
162. "a", "6");  
163. "a", "3");  
164. "a", "9");  
165. "a", 0, -1));// [9, 3, 6, 1]
166. "a")); // [1, 3, 6, 9] //输入排序后结果
167. "a", 0, -1));  
168.     }  
169. }



 二、Jedis的池化使用

 

1、导入jar包(jedis-2.3.0.jar + commons-pool2-2.0.jar)

2、配置文件(redis_config.properties)

 



ES可以和redis一起做缓存吗 redisson jedis一起用吗_redis




1. #最大分配的对象数    
2. redis.pool.maxActive=1024
3. #最大能够保持idel状态的对象数    
4. redis.pool.maxIdle=200
5. #当池内没有返回对象时,最大等待时间    
6. redis.pool.maxWait=1000
7. #当调用borrow Object方法时,是否进行有效性检查    
8. redis.pool.testOnBorrow=true
9. #当调用return
10. redis.pool.testOnReturn=true
11. #host  
12. redis.host=127.0.0.1
13. redis.host2=10.118.71.104
14. #Port    
15. redis.port=6379



 3、实例

 

 



ES可以和redis一起做缓存吗 redisson jedis一起用吗_redis



1. package
2.   
3. import
4.   
5. import
6. import
7. import
8. import
9. import
10.   
11. public class
12.   
13. private static
14.   
15. /** 初始化jedis连接池 */
16. @Before
17. public void
18. new
19. // 读取配置文件
20. "redis_config");  
21.         jedisPoolConfig.setMaxTotal(Integer.parseInt(bundle  
22. "redis.pool.maxActive")));  
23.         jedisPoolConfig.setMaxIdle(Integer.parseInt(bundle  
24. "redis.pool.maxIdle")));  
25.         jedisPoolConfig.setMaxWaitMillis(Long.parseLong(bundle  
26. "redis.pool.maxWait")));  
27.         jedisPoolConfig.setTestOnBorrow(Boolean.parseBoolean(bundle  
28. "redis.pool.testOnBorrow")));  
29.         jedisPoolConfig.setTestOnReturn(Boolean.parseBoolean(bundle  
30. "redis.pool.testOnReturn")));  
31. "redis.host");  
32. int port = Integer.valueOf(bundle.getString("redis.port"));  
33. int timeout = Integer.valueOf(bundle.getString("redis.pool.maxWait"));  
34. // 构造连接池
35. new
36.     }  
37.   
38. @Test
39. public void
40. null;  
41. try
42. // 从连接池中获取jedis实例
43.             jedis = jedisPool.getResource();  
44. "Test_Pool";  
45.             jedis.del(key);  
46. "Test_Pool");  
47. catch
48. // 销毁对象
49.             jedisPool.returnBrokenResource(jedis);  
50.             e.printStackTrace();  
51. finally
52. // 释放对象池
53.             jedisPool.returnResource(jedis);  
54.         }  
55.     }  
56.   
57. @Test
58. public void
59. null;  
60. try
61.             jedis = jedisPool.getResource();  
62. "Test_Pool"));  
63. catch
64. // 销毁对象
65.             jedisPool.returnBrokenResource(jedis);  
66.             e.printStackTrace();  
67. finally
68. // 释放对象池
69.             jedisPool.returnResource(jedis);  
70.         }  
71.     }  
72. }



 

 

三、一致性哈希(集群)

Memcached完全基于分布式集群,而Redis是Master-Slave,如果想把Reids,做成集群模式,无外乎多做几套Master-Slave,每套Master-Slave完成各自的容灾处理,通过Client工具,完成一致性哈希。

 

Memcached是在Server端完成Sharding,Redis只能依靠各个Client做Sharding。

实例:



ES可以和redis一起做缓存吗 redisson jedis一起用吗_redis



1. package
2.   
3. import
4. import
5. import
6. import
7. import
8. import
9. import
10. import
11. import
12.   
13. public class
14.   
15. private static
16.   
17. /** 初始化jedis连接池 */
18. @Before
19. public void
20. new
21. // 读取配置文件
22. "redis_config");  
23.         jedisPoolConfig.setMaxTotal(Integer.parseInt(bundle  
24. "redis.pool.maxActive")));  
25.         jedisPoolConfig.setMaxIdle(Integer.parseInt(bundle  
26. "redis.pool.maxIdle")));  
27.         jedisPoolConfig.setMaxWaitMillis(Long.parseLong(bundle  
28. "redis.pool.maxWait")));  
29.         jedisPoolConfig.setTestOnBorrow(Boolean.parseBoolean(bundle  
30. "redis.pool.testOnBorrow")));  
31.         jedisPoolConfig.setTestOnReturn(Boolean.parseBoolean(bundle  
32. "redis.pool.testOnReturn")));  
33. "redis.host");  
34. "redis.host2");  
35. int port = Integer.valueOf(bundle.getString("redis.port"));  
36. int timeout = Integer.valueOf(bundle.getString("redis.pool.maxWait"));  
37. // 构造连接池
38. new
39. new
40.                 timeout);  
41. new
42.         shards.add(jedisShardInfo1);  
43.         shards.add(jedisShardInfo2);  
44. new
45.     }  
46.   
47. @Test
48. public void
49. null;  
50. try
51. // 从连接池中获取jedis实例
52.             jedis = shardedJedisPool.getResource();  
53. "Test_Pool";  
54.             jedis.del(key);  
55. "Test_Pool");  
56. catch
57. // 销毁对象
58.             shardedJedisPool.returnBrokenResource(jedis);  
59.             e.printStackTrace();  
60. finally
61. // 释放对象池
62.             shardedJedisPool.returnResource(jedis);  
63.         }  
64.     }  
65.   
66. @Test
67. public void
68. null;  
69. try
70.             jedis = shardedJedisPool.getResource();  
71. "Test_Pool"));  
72. catch
73. // 销毁对象
74.             shardedJedisPool.returnBrokenResource(jedis);  
75.             e.printStackTrace();  
76. finally
77. // 释放对象池
78.             shardedJedisPool.returnResource(jedis);  
79.         }  
80.     }  
81. }