上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接
到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来
讲一下jedis的一些常用的API。

(1)jedis存储字符串

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. public class Test1 {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("192.168.248.129",6379);
  6. //添加数据
  7. jedis.set("username", "jack");//向key-->name中放入了value-->jack
  8. System.out.println(jedis.get("username"));//执行结果:jack
  9. jedis.append("username"," is a Coder");//拼接
  10. System.out.println(jedis.get("username"));
  11. jedis.del("username");//删除某个键
  12. System.out.println(jedis.get("username"));//为null
  13. //设置多个键值对
  14. jedis.mset("username","liuling","age","23","qq","412345678");
  15. jedis.incr("age");//进行加1操作
  16. System.out.println(jedis.get("name")+"-"+jedis.get("age")+"-"+jedis.get("qq"));
  17. }
  18. }

效果:


查看一下redis:

说明我们的操作是成功的。

(2)jedis操作Map

  1. package cn.com.redis;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Map;
  6. import redis.clients.jedis.Jedis;
  7. public class Test2 {
  8. public static void main(String[] args) {
  9. Jedis jedis = new Jedis("192.168.248.129",6379);
  10. //添加数据
  11. Map<String,String> map = new HashMap<String,String>();
  12. map.put("name", "ZhangSan");
  13. map.put("age", "35");
  14. map.put("email", "12345678@126.com");
  15. jedis.hmset("user",map);
  16. //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,
  17. //后面的key可以跟多个,是可变参数
  18. List<String> rsmap = jedis.hmget("user", "name","age","email");
  19. System.out.println(rsmap);
  20. //删除map中的某个值
  21. jedis.hdel("user","age");
  22. System.out.println(jedis.hmget("user", "age"));//因为删除了,所以返回的是null
  23. System.out.println(jedis.hlen("user"));//返回key为user的键中存放值的个数2
  24. System.out.println(jedis.exists("user"));//是否存在key为user的记录,返回true
  25. System.out.println(jedis.hkeys("user"));//返回map对象中的所有key
  26. System.out.println(jedis.hvals("user"));//返回map对象中的所有val
  27. Iterator<String> iter=jedis.hkeys("user").iterator();//得到iterator对象进行遍历
  28. while(iter.hasNext()){
  29. String key = iter.next();
  30. System.out.println(key+":"+jedis.hmget("user", key));
  31. }
  32. }
  33. }

效果:


查看一下redis:

说明我们的操作是成功的。

(3)jedis操作List

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. public class Test3 {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("192.168.248.129",6379);
  6. //开始前,先移出所有的内容
  7. jedis.del("java framework");
  8. System.out.println(jedis.lrange("java framework", 0, -1));
  9. //先向key java framework中存放三条数据
  10. //lpush key string  在key对应list的头部添加字符串元素
  11. jedis.lpush("java framework","spring");
  12. jedis.lpush("java framework","struts");
  13. jedis.lpush("java framework","hibernate");
  14. //取出所有数据,jedis.lrange是按范围取出,
  15. //第一个是key,第二个是起始位置,第三个是结束位置,-1表示取得所有
  16. System.out.println(jedis.lrange("java framework", 0, -1));
  17. //jedis.llen获取长度
  18. System.out.println(jedis.llen("java framework"));
  19. //删除数据
  20. jedis.del("java framework");
  21. //rpush key string  在key对应list的尾部添加字符串元素
  22. //插入数据的时候如果List不存在,就创建它再插入
  23. jedis.rpush("java framework", "spring");
  24. jedis.rpush("java framework", "struts");
  25. jedis.rpush("java framework", "hibernate");
  26. System.out.println(jedis.lrange("java framework", 0, -1));
  27. }
  28. }

效果:


查看以下redis:

说明我们的操作是成功的。

(4)jedis操作Set

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. public class Test4 {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("192.168.248.129",6379);
  6. //添加
  7. jedis.sadd("users", "ZhangSan");
  8. jedis.sadd("users", "LiSi");
  9. jedis.sadd("users", "WangWu");
  10. jedis.sadd("users", "ZhangEr");
  11. jedis.sadd("users", "MaLiu");
  12. //移出MaLiu
  13. jedis.srem("users", "MaLiu");
  14. System.out.println(jedis.smembers("users"));//获取所有加入的value
  15. System.out.println(jedis.sismember("users", "MaLiu"));//判断MaLiu是否是user结合的元素
  16. System.out.println(jedis.srandmember("users"));
  17. System.out.println(jedis.scard("users"));//返回集合的元素个数
  18. }
  19. }

效果:


查看以下redis:

说明我们的操作是成功的。

(5)jedis排序

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. public class Test5 {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("192.168.248.129",6379);
  6. //jedis排序
  7. //注意,此处的rpush和lpush是List的操作,是一个双向链表
  8. //rpush是从尾部加入数据,lpush是从头部加入数据
  9. jedis.del("a");//先清楚数据,再加入数据进行测试
  10. jedis.rpush("a", "1");
  11. jedis.rpush("a", "6");
  12. jedis.rpush("a", "3");
  13. jedis.rpush("a", "9");
  14. System.out.println(jedis.lrange("a", 0, -1));//[1,6,3,9]
  15. System.out.println(jedis.sort("a"));//[1,3,6,9]  输出排序后结果
  16. jedis.del("a");//先清楚数据,再加入数据进行测试
  17. jedis.lpush("a", "1");
  18. jedis.lpush("a", "6");
  19. jedis.lpush("a", "3");
  20. jedis.lpush("a", "9");
  21. System.out.println(jedis.lrange("a", 0, -1));//[9,3,6,1]
  22. System.out.println(jedis.sort("a"));//[1,3,6,9]  输出排序后结果
  23. }
  24. }

效果:


查看以下redis:

说明我们的操作是成功的。

(6)Redis连接池
我们每一次使用redis的时候,都要写Jedis jedis = new Jedis("192.168.248.129",6379);
我们要优化连接,不能使用一次就new一个连接对象,我们要创建一个工具类,管理redis的
连接和一些配置参数的设置。

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. import redis.clients.jedis.JedisPoolConfig;
  5. public class RedisUtil {
  6. //redis服务器IP
  7. private static String ADDR = "192.168.248.129";
  8. //redis的端口号
  9. private static int PORT = 6379;
  10. //访问密码
  11. private static String AUTH = "root";
  12. //可用连接实例的最大数目,默认为8
  13. //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此
  14. //时pool的状态为exhausted(耗尽)。
  15. private static int MAX_ACTIVE = 1024;
  16. //控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认也是8
  17. private static int MAX_IDLE = 200;
  18. //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。
  19. //如果超过等待时间,则直接抛出JedisConnectionException
  20. private static int MAX_WAIT = 10000;
  21. private static int TIMEOUT = 10000;
  22. //在borrow一个redis实例时,是否提前进行validate操作;
  23. //如果为true,则得到的jedis实例均是可用的
  24. private static boolean TEST_ON_BORROW = true;
  25. private static JedisPool jedisPool = null;
  26. /**
  27. * 初始化Redis连接池
  28. * Jedis的连接池配置需要用到org.apache.commons.pool.impl.GenericObjectPool.Config.class
  29. * 所以要引入commons-pool.jar
  30. * */
  31. static{
  32. try {
  33. JedisPoolConfig config = new JedisPoolConfig();
  34. config.setMaxTotal(MAX_ACTIVE);//老版本是setMaxActive
  35. config.setMaxIdle(MAX_IDLE);
  36. config.setMaxWaitMillis(MAX_WAIT);//老版本是maxMaxWait
  37. config.setTestOnBorrow(TEST_ON_BORROW);
  38. jedisPool = new JedisPool(config,ADDR,PORT,TIMEOUT);//有密码的时候传入AUTH
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. /**
  44. * 获取Jedis实例
  45. * */
  46. public synchronized static Jedis getJedis(){
  47. try {
  48. if(jedisPool != null){
  49. Jedis resource = jedisPool.getResource();
  50. return resource;
  51. }else{
  52. return null;
  53. }
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. return null;
  57. }
  58. }
  59. /**
  60. * 释放jedis资源
  61. * */
  62. public static void returnResource(final Jedis jedis){
  63. if(jedis != null){
  64. jedisPool.returnResourceObject(jedis);
  65. }
  66. }
  67. }

不要忘记引入commons-pool.jar:


测试:

  1. package cn.com.redis;
  2. import redis.clients.jedis.Jedis;
  3. public class Test6 {
  4. public static void main(String[] args) {
  5. RedisUtil redisUtil = new RedisUtil();
  6. Jedis jedis = redisUtil.getJedis();
  7. try {
  8. System.out.println(jedis.lrange("a", 0, -1));
  9. System.out.println(jedis.smembers("users"));
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }finally{
  13. redisUtil.returnResource(jedis);
  14. }
  15. }
  16. }

结果:

使用连接池获取jedis对象会更符合开发规范。
智能转账:http://blog.csdn.net/acmman/article/details/53487684

redis12--常用API的更多相关文章

  1. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  2. compass General 常用api学习[Sass和compass学习笔记]

    compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...

  3. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  4. C++ 中超类化和子类化常用API

    在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...

  5. node.js整理 02文件操作-常用API

    NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...

  6. js的常用api

    JavaScript常用API总结 原创 2016-10-02 story JavaScript 下面是我整理的一些JavaScript常用的API清单. 目录 元素查找 class操作 节点操作 属 ...

  7. JS操作DOM常用API总结

    <JS高程>中的DOM部分写的有些繁琐,还没勇气整理,直到看到了这篇博文 Javascript操作DOM常用API总结,顿时有了一种居高临下,一览全局的感觉.不过有时间还是得自己把书里面的 ...

  8. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...

  9. 【OpenGL游戏开发之二】OpenGL常用API

    OpenGL常用API 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenGL ...

  10. Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API

    A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...

随机推荐

  1. 新软件马上就要完成了,先发篇文章YY下

    最近一直都在搞网站抓取方面的开发,闲着无聊逛逛论坛,发现有些帖子还是写的相当不错的,只是一篇一篇的点进去比较麻烦,于是就写了个小软件只是为了方便查看博客园和CSDN上的优秀文章.其实这个还可以拓展的, ...

  2. asp.net MVC 路由机制

    1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ...

  3. hdu1205(类似 分布垃圾数列)

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  4. [置顶] github 出现 Permission denied (publickey)的解决

    今天写了一篇博客,想push到github上的时候出现了以下错误 Permission denied (publickey). fatal: The remote end hung up unexpe ...

  5. 遭遇ORA-01078,LRM-00109,ORA-27046 SPFILE文件损坏

    今天在启动数据库时遭遇到 $ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Tue Jul 16 21:28:03 ...

  6. mysql之多列索引

    mysql的多列索引是经常会遇到的问题,怎样才能有效命中索引,是本文要探讨的重点. 多列索引使用的Btree,也就是平衡二叉树.简单来说就是排好序的快速索引方式.它的原则就是要遵循左前缀索引. 多个索 ...

  7. There is no getter for property named 'userSpAndSp' in 'class com.uauth.beans.UserSpAndSp'

    mybatis 报错There is no getter for property named 'userSpAndSp' in 'class com.uauth.beans.UserSpAndSp' ...

  8. Maven 插件 maven-tomcat7-plugin - 常用命令及配置

    常用命令 tomcat7:deploy 说明:部署 WAR 到 Tomcat tomcat7:help 说明:查看插件帮助信息 tomcat7:run 说明:支行当前项目 配置 <project ...

  9. 官网.jar包下载技巧

    最近在学Java,但是往往要用到好多jar包,只能从网上下载,但是网上找实在太费事了,而且有时候给我们带来了许多的不便.找不到jar包程序就运行不了,心里真不是个滋味.可是自己就是不甘心.经过我的不懈 ...

  10. CodeForces 749D Leaving Auction

    二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...