Redis(五)-- Java API

2020-05-28 00:00:00 查询 操作 元素 类型 实例


一、pox.xml

  1. <dependencies>

  2. <dependency>

  3. <groupId>redis.clients</groupId>

  4. <artifactId>jedis</artifactId>

  5. <version>2.9.0</version>

  6. </dependency>

  7. <dependency>

  8. <groupId>org.apache.commons</groupId>

  9. <artifactId>commons-pool2</artifactId>

  10. <version>2.4.2</version>

  11. </dependency>

  12. <dependency>

  13. <groupId>junit</groupId>

  14. <artifactId>junit</artifactId>

  15. <version>4.11</version>

  16. <scope>test</scope>

  17. </dependency>

  18. </dependencies>

二、Java代码,Jedis工具类

  1. package om.xbq.redis;


  2. import java.util.List;

  3. import java.util.Set;

  4. import org.junit.Test;

  5. import redis.clients.jedis.Jedis;

  6. import redis.clients.jedis.JedisPool;

  7. import redis.clients.jedis.JedisPoolConfig;

  8. /**

  9. * Jedis工具类

  10. * @author xbq

  11. * @created2017-4-19

  12. */

  13. public class JedisUtil {


  14. private JedisPool pool;

  15. private static String URL = "192.168.242.130";

  16. private static int PORT = 6379;

  17. private static String PASSWORD = "xbq123";


  18. // ThreadLocal,给每个线程 都弄一份 自己的资源

  19. private final static ThreadLocal<JedisPool> threadPool = new ThreadLocal<JedisPool>();

  20. private final static ThreadLocal<Jedis> threadJedis = new ThreadLocal<Jedis>();


  21. private final static int MAX_TOTAL = 100; // 大分配实例

  22. private final static int MAX_IDLE = 50; // 大空闲数

  23. private final static int MAX_WAIT_MILLIS = -1; // 大等待数


  24. /**

  25. * 获取 jedis池

  26. * @return

  27. */

  28. public JedisPool getPool(){

  29. JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

  30. // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取,如果赋值为-1,则表示不限制;

  31. // 如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)

  32. jedisPoolConfig.setMaxTotal(MAX_TOTAL);

  33. // 控制一个pool多有多少个状态为idle(空闲的)的jedis实例

  34. jedisPoolConfig.setMaxIdle(MAX_IDLE);

  35. // 表示当borrow(引入)一个jedis实例时,大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException

  36. jedisPoolConfig.setMaxWaitMillis(MAX_WAIT_MILLIS);


  37. final int timeout = 60 * 1000;

  38. pool = new JedisPool(jedisPoolConfig, URL, PORT, timeout);


  39. return pool;

  40. }


  41. /**

  42. * 在jedis池中 获取 jedis

  43. * @return

  44. */

  45. private Jedis common(){

  46. // 从 threadPool中取出 jedis连接池

  47. pool = threadPool.get();

  48. // 为空,则重新产生 jedis连接池

  49. if(pool == null){

  50. pool = this.getPool();

  51. // 将jedis连接池维护到threadPool中

  52. threadPool.set(pool);

  53. }

  54. // 在threadJedis中获取jedis实例

  55. Jedis jedis = threadJedis.get();

  56. // 为空,则在jedis连接池中取出一个

  57. if(jedis == null){

  58. jedis = pool.getResource();

  59. // 验证密码

  60. jedis.auth(PASSWORD);

  61. // 将jedis实例维护到threadJedis中

  62. threadJedis.set(jedis);

  63. }

  64. return jedis;

  65. }


  66. /**

  67. * 释放资源

  68. */

  69. public void closeAll(){

  70. Jedis jedis = threadJedis.get();

  71. if(jedis != null){

  72. threadJedis.set(null);

  73. JedisPool pool = threadPool.get();

  74. if(pool != null){

  75. // 释放连接,归还给连接池

  76. pool.returnResource(jedis);

  77. }

  78. }

  79. }


  80. /**

  81. * 判断key是否存在

  82. * @param key

  83. * @return

  84. */

  85. public boolean existsKey(String key){

  86. Jedis jedis = this.common();

  87. return jedis.exists(key);

  88. }


  89. /**

  90. * 删除

  91. * @param key

  92. * @return

  93. */

  94. public Long delValue(String key){

  95. Jedis jedis = this.common();

  96. return jedis.del(key);

  97. }


  98. // ----------------------------对String类型的操作-----------------------------------------

  99. /**

  100. * 增加 修改

  101. * @param key

  102. * @param value

  103. */

  104. public String setValue(String key, String value) {

  105. Jedis jedis = this.common();

  106. return jedis.set(key, value);

  107. }


  108. /**

  109. * 查询

  110. * @param key

  111. * @return

  112. */

  113. public String getValue(String key){

  114. Jedis jedis = this.common();

  115. return jedis.get(key);

  116. }


  117. /**

  118. * 追加数据

  119. * @param key

  120. * @param value

  121. */

  122. public void appendValue(String key, String value){

  123. Jedis jedis = this.common();

  124. jedis.append(key, value);

  125. }


  126. /**

  127. * 测试 String

  128. */

  129. @Test

  130. public void testString(){

  131. if(this.existsKey("name")){

  132. System.out.println("这一个key存在了!");

  133. this.appendValue("name", "xbq6666");


  134. String name = this.getValue("name");

  135. System.out.println("name===" + name);


  136. long flag = this.delValue("name");

  137. System.out.println(flag);


  138. }else {

  139. this.setValue("name", "javaCoder");

  140. String name = this.getValue("name");

  141. System.out.println("name===" + name);

  142. }

  143. }


  144. // ----------------------------对List类型的操作------------------------------------------

  145. /**

  146. * 保存到链表

  147. * @param key

  148. * @param keys

  149. * @return

  150. */

  151. public long lpush(String key, String ...keys){

  152. Jedis jedis = this.common();

  153. return jedis.lpush(key, keys);

  154. }


  155. /**

  156. * 取出链表中的全部元素

  157. * @param key

  158. * @return

  159. */

  160. public List<String> lrange(String key) {

  161. Jedis jedis = this.common();

  162. return jedis.lrange(key, , -1);

  163. }


  164. /**

  165. * 查询出链表中的元素个数

  166. * @param key

  167. * @return

  168. */

  169. public long llen(String key){

  170. Jedis jedis = this.common();

  171. return jedis.llen(key);

  172. }


  173. /**

  174. * 取出链表中的头部元素

  175. * @param key

  176. * @return

  177. */

  178. public String lpop(String key){

  179. Jedis jedis = this.common();

  180. return jedis.lpop(key);

  181. }


  182. // ----------------------------对Hash类型的操作------------------------------------------

  183. /**

  184. * 添加

  185. * @param key

  186. * @param field

  187. * @param value

  188. * @return

  189. */

  190. public long hset(String key, String field, String value) {

  191. Jedis jedis = this.common();

  192. return jedis.hset(key, field, value);

  193. }


  194. /**

  195. * 查询

  196. * @param key

  197. * @param field

  198. * @return

  199. */

  200. public String hget(String key, String field){

  201. Jedis jedis = this.common();

  202. return jedis.hget(key, field);

  203. }


  204. /**

  205. * 判断 key 中的field 是否存在

  206. * @param key

  207. * @param field

  208. * @return

  209. */

  210. public boolean hexists(String key, String field){

  211. Jedis jedis = this.common();

  212. return jedis.hexists(key, field);

  213. }


  214. /**

  215. * 删除

  216. * @param key

  217. * @param fields

  218. * @return

  219. */

  220. public long hdel(String key, String ...fields){

  221. Jedis jedis = this.common();

  222. return jedis.hdel(key, fields);

  223. }


  224. // ----------------------------对Set类型的操作--------------------------------------------

  225. /**

  226. * 添加元素

  227. * @param key

  228. * @param members

  229. * @return

  230. */

  231. public long sadd(String key, String ...members){

  232. Jedis jedis = this.common();

  233. return jedis.sadd(key, members);

  234. }


  235. /**

  236. * 查询出set中的所有元素

  237. * @param key

  238. * @return

  239. */

  240. public Set<String> sMember(String key){

  241. Jedis jedis = this.common();

  242. return jedis.smembers(key);

  243. }


  244. /**

  245. * 查询出 set中元素的个数

  246. * @param key

  247. * @return

  248. */

  249. public long scard(String key){

  250. Jedis jedis = this.common();

  251. return jedis.scard(key);

  252. }


  253. // ----------------------------对ZSet类型的操作--------------------------------------------

  254. /**

  255. * 在zset中添加元素

  256. * @param key

  257. * @param score

  258. * @param member

  259. * @return

  260. */

  261. public long zadd(String key, double score ,String member){

  262. Jedis jedis = this.common();

  263. return jedis.zadd(key, score, member);

  264. }


  265. /**

  266. * 查询所有元素

  267. * @param key

  268. * @return

  269. */

  270. public Set<String> zrange(String key){

  271. Jedis jedis = this.common();

  272. return jedis.zrange(key, , -1);

  273. }


  274. /**

  275. * 查询zset中的元素个数

  276. * @param key

  277. * @return

  278. */

  279. public long zcard(String key){

  280. Jedis jedis = this.common();

  281. return jedis.zcard(key);

  282. }


  283. /**

  284. * 删除zset中的一个 或者多个元素

  285. * @param key

  286. * @param members

  287. * @return

  288. */

  289. public long zrem(String key, String ...members){

  290. Jedis jedis = this.common();

  291. return jedis.zrem(key, members);

  292. }

  293. }


相关文章