添加Maven依赖:

 1     <dependencies>
 2         <!-- 单元测试 -->
 3         <dependency>
 4             <groupId>junit</groupId>
 5             <artifactId>junit</artifactId>
 6             <version>4.11</version>
 7             <scope>test</scope>
 8         </dependency>
 9         <dependency>
10             <groupId>redis.clients</groupId>
11             <artifactId>jedis</artifactId>
12             <version>2.8.0</version>
13         </dependency>
14     </dependencies>

联系Jedis操作redis的常用命令:

TestRedis.java

  1  import java.util.List;
  2  import org.junit.Test;
  3  import redis.clients.jedis.Jedis;
  4  import redis.clients.jedis.JedisPool;
  5  import redis.clients.jedis.JedisPoolConfig;
  6  import redis.clients.jedis.Pipeline;
  7  import redis.clients.jedis.Transaction;
  8
  9  public class TestRedis {
 10
 11      String host = "192.168.1.99";
 12      int port = 6379;
 13      Jedis jedis = new Jedis(host, port);
 14      /**
 15       * 单机单链接的方式
 16       * 这种获取连接的方式只在测试的时候使用
 17       * 注意需要关闭redis服务器的防火墙
 18       * @throws Exception
 19       */
 20      @Test
 21      public void test1() throws Exception {
 22          //获取redis连接
 23          //jedis.set("hehe", "aaaaaa");
 24          String value = jedis.get("hehe");
 25          System.out.println(value);
 26          jedis.close();
 27      }
 28
 29      /**
 30       * 单机连接池方式
 31       * 实际工作中建议使用这种方式
 32       * @throws Exception
 33       */
 34      @Test
 35      public void test2() throws Exception {
 36          //指定连接池的参数
 37          JedisPoolConfig poolConfig = new JedisPoolConfig();
 38          //最大空闲连接数
 39          poolConfig.setMaxIdle(10);
 40          //连接池的最大连接数
 41          poolConfig.setMaxTotal(100);
 42          //设置获取连接的最大等待时间
 43          poolConfig.setMaxWaitMillis(1000);
 44          //从连接池中获取连接的时候是否需要校验,这样可以保证取出的连接都是可用的
 45          poolConfig.setTestOnBorrow(true);
 46          //获取jedis连接池
 47          JedisPool jedisPool = new JedisPool(poolConfig , host, port);
 48          //从连接池中取一个链接
 49          Jedis jedis = jedisPool.getResource();
 50          String value = jedis.get("hehe");
 51          System.out.println(value);
 52          //这个close并不是关闭连接,而是把连接还给连接池。
 53          jedis.close();
 54      }
 55
 56      /**
 57       * 手工实现incr命令
 58       * @throws Exception
 59       */
 60      @Test
 61      public void testIncr() throws Exception {
 62         //监控键a的值,如果在事务开启(multi命令执行之间这个键的值被其他命令修改了
 63         //watch并不能取消其他线程的修改那么就会取消事务代码的执行,事务会返回一个null(nil))
 64          jedis.watch("a");
 65          String value = jedis.get("a");
 66          int parseInt = Integer.parseInt(value);
 67          parseInt++;
 68          System.out.println("休息一会....");
 69          Thread.sleep(5000);
 70          Transaction multi = jedis.multi();
 71          multi.set("a", parseInt+"");
 72          List<Object> exec = multi.exec();
 73          if(exec==null){//exec返回的是null说明键的值被其它线程修改了.
 74              System.out.println("值被修改了,事务没有执行。。。。");
 75              testIncr();
 76          }else{
 77              System.out.println("正常执行....");
 78          }
 79      }
 80
 81      /**
 82       * 模拟恶意登陆的场景,
 83       * 限制一个IP的访问次数
 84       */
 85      private boolean testLogin(String ip) {
 86          String value = jedis.get(ip);
 87          if(value==null){
 88              jedis.set(ip, 1+"");
 89              jedis.expire(ip, 60);//如果不加这个设置这个ip只能访问10次
 90          }else{
 91              int parseInt = Integer.parseInt(value);
 92              if(parseInt>10){
 93                  System.out.println("访问受限!");
 94                  return false;
 95              }
 96              jedis.incr(ip);
 97          }
 98
 99          return true;
100      }
101
102      /**
103       * 不使用管道
104       * 初始化1000条数据
105       * 消耗时间:5365(老师机器)  122(我的机器)
106       * @throws Exception
107       */
108      @Test
109      public void test3() throws Exception {
110          long start_time = System.currentTimeMillis();
111          for(int i=0;i<1000;i++){
112              jedis.set("he"+i, "hello");
113          }
114          System.out.println("消耗时间:"+(System.currentTimeMillis()-start_time));
115      }
116
117
118      /**
119       * 使用管道
120       * 初始化1000条数据
121       * 消耗时间:281(老师机器) 27(我的机器)
122       * @throws Exception
123       */
124      @Test
125      public void test4() throws Exception {
126          long start_time = System.currentTimeMillis();
127          Pipeline pipelined = jedis.pipelined();
128          for(int i=0;i<1000;i++){
129              pipelined.set("ha"+i, "hello");
130          }
131
132          pipelined.sync();//执行管道中的命令
133          System.out.println("消耗时间:"+(System.currentTimeMillis()-start_time));
134      }
135  }

一般通过一个工具类来从redis连接池中获得redis连接.

RedisUtil.java

 1 import redis.clients.jedis.Jedis;
 2 import redis.clients.jedis.JedisPool;
 3 import redis.clients.jedis.JedisPoolConfig;
 4
 5 /**
 6  * 静态工具类
 7  * @author Administrator
 8  *
 9  */
10 public class RedisUtils {
11
12     private static JedisPool jedisPool = null;
13
14     /**
15      * 从连接池中获取一个redis链接
16      * 如果两个线程,第一个线程先进来还没有new出来,第二个线程进入if了,这样就造
17      * 线程的安全性问题.
18      * @return
19      */
20     public static synchronized Jedis getJedis(){
21         if(jedisPool==null){//第一次初始化的时候是null,第一次出事后之后就不再执行
22             JedisPoolConfig poolConfig = new JedisPoolConfig();
23             //最大空闲连接数
24             poolConfig.setMaxIdle(10);
25             //连接池中最大连接数
26             poolConfig.setMaxTotal(100);
27             //在获取链接的时候设置的超市时间
28             poolConfig.setMaxWaitMillis(1000);
29             //表示在向连接池中创建连接的时候会对链接进行测试,保证连接池中的链接都是可用的。
30             poolConfig.setTestOnBorrow(true);
31             jedisPool = new JedisPool(poolConfig, "192.168.1.170", 6379);
32         }
33         Jedis jedis = jedisPool.getResource();
34         return jedis;
35     }
36
37     /**
38      * 把redis链接返回连接池
39      */
40     public static void returnJedis(Jedis jedis){
41         jedisPool.returnResourceObject(jedis);
42     }
43 }

通过Jedis来操作Redis集群.

ClusterTest.java

 1 import java.util.HashSet;
 2 import java.util.Set;
 3
 4 import org.junit.Test;
 5
 6 import redis.clients.jedis.HostAndPort;
 7 import redis.clients.jedis.JedisCluster;
 8 import redis.clients.jedis.JedisPoolConfig;
 9
10 public class ClusterTest {
11
12
13     @Test
14     public void test() throws Exception{
15         JedisPoolConfig poolConfig = new JedisPoolConfig();
16         //最大空闲连接数
17         poolConfig.setMaxIdle(10);
18         //连接池中最大连接数
19         poolConfig.setMaxTotal(100);
20         //在获取链接的时候设置的超市时间
21         poolConfig.setMaxWaitMillis(1000);
22         //表示在向连接池中创建连接的时候会对链接进行测试,保证连接池中的链接都是可用的。
23         poolConfig.setTestOnBorrow(true);
24         Set<HostAndPort> nodes = new HashSet<HostAndPort>();
25         nodes.add(new HostAndPort("192.168.0.172", 7000));
26         nodes.add(new HostAndPort("192.168.0.172", 7001));
27         nodes.add(new HostAndPort("192.168.0.172", 7002));
28         nodes.add(new HostAndPort("192.168.0.172", 7003));
29         nodes.add(new HostAndPort("192.168.0.172", 7004));
30         nodes.add(new HostAndPort("192.168.0.172", 7005));
31
32         JedisCluster jedisCluster = new JedisCluster(nodes, poolConfig);
33         jedisCluster.set("a", "1");
34         String value = jedisCluster.get("a");
35         System.out.println(value);
36     }
37 }

转载于:https://www.cnblogs.com/DreamDrive/p/5587137.html

Jedis操作Redis数据库相关推荐

  1. 【Redis】7.使用jedis操作redis数据库

    jedis jedis是java程序操纵Redis的工具. Jedis是Redis官方推荐的Java链接工具 使用前导入,下面的测试建议也导入测试的包 <!-- 导入jedis的包--> ...

  2. jedis连接mysql_使用Jedis操作Redis数据库

    Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Java的客户端,有Jedis.Redisson ...

  3. 【Java案例】-Jedis操作redis教程

    <–start–> 要想通过Java程序来操作redis数据库,就要使用到jedis工具. 在maven项目中,使用jedis需要在pom.xml文件中导入jedis的坐标. <!- ...

  4. 高并发核心技术Redis系列(七)--------Jedis操作Redis

    目录 一.Jedis操作Redis 1.1 Cache Aside Pattern(缓存模式) 1.2 引入Jedis 1.3 常用方法 1. Jedis连接到redis 2. String 3. K ...

  5. Java中使用jedis操作redis(使用maven)

    jedis的使用 前言 一.简单使用示例 1.快速入门 2.操作五种数据格式 二.jedis连接池:jedisPool 1.示例 2.jedies详细配置 三.创建连接池工具类 1.jedis.pro ...

  6. maven项目——使用jedis操作redis

    1.导入依赖   依赖如下: <!--导入jedis的jar包--><dependency><groupId>redis.clients</groupId&g ...

  7. java连接操作redis数据库

    1.通过jedis连接操作redis数据库 第一步,导包 第二步,连接操作string类型和hashmap类型数据 结果如下 2.通过springdata Redis操作redis数据库 第一步,导包 ...

  8. java jedis使用_Java中使用Jedis操作Redis

    Java中使用Jedis操作Redis 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0 ...

  9. zincrby redis python_【Redis数据结构 序】使用redispy操作Redis数据库

    点击蓝色"不太灵光的程序员"关注我哟加个"星标",每天上午 08:00,干货推送!本文依旧会对学习内容进行拆分,建议阅读时间基本保持10分钟内,想学习之前章节内 ...

最新文章

  1. Java架构体系学习路线图,这六点尤为重要!
  2. Spring Boot + Redis 实现接口幂等性 | 分布式开发必知!
  3. 当页面有多个js文件时,应如何引入?
  4. 自动化办公之excel教程(3):数据编辑操作,表格的美化操作,应用表格样式和单元格样式,制作报销汇总单
  5. 使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开
  6. 关于Keil中,变量函数跨文件引用报错问题
  7. 可控硅型号怎样识别_可控硅是什么_可控硅型号_可控硅分类及判别_可控硅种类...
  8. Andoid游戏【真情表白】让你心爱的人在游戏中感受真情!
  9. 关于填写软件著作权申请表时源程序量总行数怎么确认的问题?
  10. 软件结构体系与设计模式--1.软件设计模式概述
  11. 余弦函数导数推导过程_三角函数公式篇
  12. 阿里云DataV专业版发布,为可视化创造更多可能!
  13. JAVA第五课:正则表达式
  14. Android Studio提示 Cannot load key store: Keystore was tampered with, or password was incorre
  15. 51单片机基础——数码管数组动态显示0—F
  16. Python之字符串源码解析
  17. 神经网络知识梳理——从神经元到深度学习
  18. ristretto255 point压缩和解压缩算法(2)——extended坐标系下
  19. echarts map (echarts地图)使用总结
  20. ORA-15064 ORA-03113 - 测试库案例

热门文章

  1. 《JAVA练习题目9》 创建一个Person类和一个Family类。(这次的OJ实在写的没有状态,被样例搞崩了,这次代码还有好多代码复制等一系列不良现象,就是为了过OJ写的。。大家凑活看一下吧)
  2. java代码下划线是啥意思,在这个Java代码中,下划线实际上做了什么?
  3. mysql监控 hp_0066 使用PHP和MySQL实现学生分数信息管理
  4. 能打开java文件_用java打开一个本地文件
  5. opencv 调整窗口大小_opencv改变imshow窗口大小,窗口位置的方法
  6. 计算机公共课考试试题,2019-度公共课计算机应用基础考试试题附答案.doc
  7. c语言提取颜色,C语言颜色转换宏
  8. iphone连上wifi却上不了网_必收藏为什么手机信号满格,却上不了网,4招为你解决...
  9. java client类_Jmeter中自定义JavaSamplerClient类的编写
  10. linux igmp v3 过滤ip,网络 – Linux和IGMPv3上的多播加入