Java操作redis

Java操作redis很简单。创建一个普通的Java工程。然后导入redis依赖的jar包。jar包我已经上传了。

1.入门级的demo

入门级demo代码  

  1. package com.bjsxt.test;  
  2.   
  3. import redis.clients.jedis.Jedis;  
  4.   
  5. public class RedisDemo {  
  6.       
  7.     public static Jedis getJedis(){  
  8.         Jedis jedis = null;  
  9.         jedis = new Jedis(FinalCollention.IP, 6379);  //redis服务器的ip和端口  
  10.         jedis.auth(FinalCollention.PASSWORD);  //连接redis的密码  
  11.         return jedis;  
  12.     }  
  13.     public void test(){  
  14.         Jedis jedis = null;  
  15.         try{  
  16.             jedis = getJedis();  
  17.             jedis.incr("test");  
  18.             long dbsize = jedis.dbSize();  
  19.             System.out.println("数据库大小:"+dbsize);  
  20.             System.out.println("测试test的值:"+jedis.get("test"));  
  21.               
  22.         }catch(Exception e){  
  23.             e.printStackTrace();  
  24.         }finally{  
  25.             if(jedis != null){  
  26.                 jedis.disconnect();  
  27.             }  
  28.         }  
  29.     }  
  30.     public static void main(String[] args) {  
  31.         RedisDemo demo = new RedisDemo();  
  32.         demo.test();  
  33.     }  
  34. }  

 

如果出现Java无法连接redis的异常,主要有三个方面的问题:

1.Java运行的主机ping一下redis服务器所在主机,看能否ping通

2.关闭redis服务器所在主机的防火墙

3.打开redis安装目录下的redis.conf文件。注释掉:bind 127.0.0.1这句话

注释掉bind代码  

  1. # Accept connections on the specified port, default is 6379.  
  2. # If port 0 is specified Redis will not listen on a TCP socket.  
  3. port 6379  
  4.   
  5. # If you want you can bind a single interface, if the bind option is not  
  6. # specified all the interfaces will listen for incoming connections.  
  7. #  
  8. # bind 127.0.0.1  
  9. "redis.conf" 597L, 25667C written  

 特别说明:后面的实例,我就不使用try--catch了,但是自己写时一定要记着关闭连接

2.Java操作redis的各种数据结构

Redis的各种数据类型测试代码  

  1. package com.bjsxt.test;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import redis.clients.jedis.Jedis;  
  8.   
  9. public class RedisDataTypeDemo {  
  10.       
  11.     public static Jedis getJedis(){  
  12.         Jedis jedis = null;  
  13.         jedis = new Jedis(FinalCollention.IP, 6379);  //redis服务器的ip和端口  
  14.         jedis.auth(FinalCollention.PASSWORD);  //连接redis的密码  
  15.         return jedis;  
  16.     }  
  17.     /**  
  18.      *   
  19.      * @title demoKey  
  20.      * @description 测试Key  
  21.      * @author hadoop  
  22.      */  
  23.     public void demoKey(){  
  24.         Jedis jedis = RedisDataTypeDemo.getJedis();  
  25.         System.out.println("查看键为aa的是否存在:"+jedis.exists("aa"));  
  26.         System.out.println("查看键为aa的类型:"+jedis.type("aa"));  
  27.         System.out.println("随机获得一个key:"+jedis.randomKey());  
  28.         System.out.println("将aa重命名为bb:"+jedis.rename("aa", "bb"));  
  29.         System.out.println("删除bb:"+jedis.del("bb"));  
  30.         //从上面的方法可以看出,redis提供的接口方法名和redis-cli客户端提供的方法名是一样的,所以,只要对redis客户端的命令熟悉,那么Java操作redis就不是问题  
  31.     }  
  32.     /**  
  33.      *   
  34.      * @title demoString  
  35.      * @description 测试String  
  36.      * @author hadoop  
  37.      */  
  38.     public void demoString(){  
  39.         Jedis jedis = RedisDataTypeDemo.getJedis();  
  40.         System.out.println("设置name:"+jedis.set("name", "小花"));  
  41.         System.out.println("设置name1:"+jedis.set("name1", "小花1"));  
  42.         System.out.println("设置那么2:"+jedis.set("name2", "小花2"));  
  43.         System.out.println("设置name,如果存在返回0:"+jedis.setnx("name", "小花哈哈"));  
  44.         System.out.println("获取key为name和name1的value值:"+jedis.mget("name","name1"));  
  45.         System.out.println("自增1:"+jedis.incr("index"));  
  46.         System.out.println("自增1:"+jedis.incr("index"));  
  47.         System.out.println("自增2:"+jedis.incrBy("count", 2));  
  48.         System.out.println("自增2:"+jedis.incrBy("count", 2));  
  49.         System.out.println("递减1:"+jedis.decr("count"));  
  50.         System.out.println("递减2:"+jedis.decrBy("index",2));  
  51.         System.out.println("在name后面添加String:"+jedis.append("name", ",我爱你"));  
  52.         System.out.println("获取key为name的值:"+jedis.get("name"));  
  53.           
  54.     }  
  55.     /**  
  56.      *   
  57.      * @title demoList  
  58.      * @description 测试list数据类型  
  59.      * @author hadoop  
  60.      */  
  61.     public void demoList(){  
  62.         Jedis jedis = RedisDataTypeDemo.getJedis();  
  63.         //在头添加  
  64.         jedis.lpush("list", "hadoop","hbase","hive","pig","zookeeper");  
  65.         //在末尾添加  
  66.         jedis.rpush("list", "java","struts");  
  67.         //返回长度  
  68.         jedis.llen("list");  
  69.         //取值  
  70.         List<String> list = jedis.lrange("list", 0, -1);  
  71.         for (String string : list) {  
  72.             System.out.println(string);  
  73.         }  
  74.     }  
  75.     /**  
  76.      *   
  77.      * @title demoSet  
  78.      * @description 测试set数据类型  
  79.      * @author hadoop  
  80.      */  
  81.     public void demoSet(){  
  82.         Jedis jedis = RedisDataTypeDemo.getJedis();  
  83.         jedis.sadd("city", "北京","上海","重启","武汉");  
  84.         System.out.println("取出最上面的:"+jedis.spop("city"));  
  85.         System.out.println("随机取出一个值"+jedis.srandmember("city"));  
  86.         jedis.sadd("city2", "北京","武汉","河北","张家界","辽林");  
  87.         System.out.println("交集:"+jedis.sinter("city","city1"));  
  88.         System.out.println("并集:"+jedis.sunion("city","city1"));  
  89.         System.out.println("差集:"+jedis.sdiff("city","city1"));  
  90.           
  91.     }  
  92.     /**  
  93.      *   
  94.      * @title demoMap  
  95.      * @description 测试map数据类型  
  96.      * @author hadoop  
  97.      */  
  98.     public void demoMap(){  
  99.         Jedis jedis = RedisDataTypeDemo.getJedis();  
  100.         jedis.hset("Mcity", "c1", "北京");  
  101.         System.out.println("取值:"+jedis.hget("city", "c1"));  
  102.         Map<String,String> mcity = new HashMap<String, String>();  
  103.         mcity.put("c1", "桂林");  
  104.         mcity.put("c2", "天津");  
  105.         mcity.put("c3", "合肥");  
  106.         jedis.hmset("Mcity2", mcity);  
  107.         List<String> list =  jedis.hmget("Mcity2", "c1","c2","c3");  
  108.         for (String string : list) {  
  109.             System.out.println(string);  
  110.         }  
  111.         System.out.println(jedis.hlen("Mcity2"));  
  112.     }  
  113.     //测试  
  114.     public static void main(String[] args) {  
  115.         RedisDataTypeDemo rdr = new RedisDataTypeDemo();  
  116.         rdr.demoKey();  
  117.         rdr.demoList();  
  118.         rdr.demoMap();  
  119.         rdr.demoSet();  
  120.         rdr.demoString();  
  121.     }  
  122. }  

 3.Java操作redis的管道

管道代码  

  1. package com.bjsxt.test;  
  2.   
  3. import redis.clients.jedis.Jedis;  
  4. import redis.clients.jedis.Pipeline;  
  5.   
  6. public class RedisPipelineDemo {  
  7.     public static Jedis getJedis(){  
  8.         Jedis jedis = null;  
  9.         jedis = new Jedis(FinalCollention.IP, 6379);  //redis服务器的ip和端口  
  10.         jedis.auth(FinalCollention.PASSWORD);  //连接redis的密码  
  11.         return jedis;  
  12.     }  
  13.       
  14.     public void hasPipeline(){  
  15.         Jedis jedis = RedisPipelineDemo.getJedis();  
  16.         System.out.println("开始:"+System.currentTimeMillis());  
  17.         Pipeline pl = jedis.pipelined();  
  18.         for(int i = 0 ; i < 1000 ; i++){  
  19.             pl.incr("testPL");  
  20.         }  
  21.         pl.sync();  
  22.         System.out.println("开始:"+System.currentTimeMillis());  
  23.     }  
  24.       
  25.     public void noPipeline(){  
  26.         Jedis jedis = RedisPipelineDemo.getJedis();  
  27.         System.out.println("开始:"+System.currentTimeMillis());  
  28.         for(int i = 0 ; i < 1000 ; i++){  
  29.             jedis.incr("testPL");  
  30.         }  
  31.         System.out.println("开始:"+System.currentTimeMillis());  
  32.     }  
  33. }  

 4.redis事务

Redis事务代码  

  1. package com.bjsxt.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import redis.clients.jedis.Jedis;  
  6. import redis.clients.jedis.Transaction;  
  7.   
  8. public class RedisTXDemo {  
  9.     public static Jedis getJedis(){  
  10.         Jedis jedis = null;  
  11.         jedis = new Jedis(FinalCollention.IP, 6379);  //redis服务器的ip和端口  
  12.         jedis.auth(FinalCollention.PASSWORD);  //连接redis的密码  
  13.         return jedis;  
  14.     }  
  15.     /**  
  16.      *   
  17.      * @title txDemo  
  18.      * @description 没有异常的事务  
  19.      * @author hadoop  
  20.      */  
  21.     public void txDemo(){  
  22.         Jedis jedis = getJedis();  
  23.         //开启事务  
  24.         Transaction tx = jedis.multi();  
  25.           
  26.         tx.set("txcity", "beijin");  
  27.         tx.sadd("hi", "abc");  
  28.         tx.get("txcity");  
  29.         List<Object> objs = tx.exec();  
  30.           
  31.         for (Object object : objs) {  
  32.             System.out.println(object.toString());  
  33.         }  
  34.     }  
  35.       
  36.     /**  
  37.      *   
  38.      * @title txHasExDemo  
  39.      * @description 含有异常的事务  
  40.      * @author hadoop  
  41.      */  
  42.     public void txHasExDemo(){  
  43.         Jedis jedis = getJedis();  
  44.         //开启事务  
  45.         Transaction tx = jedis.multi();  
  46.           
  47.         tx.set("txcity1", "beijin");  
  48.         tx.sadd("hi1", "abc");  
  49.         int i = 1/0;  
  50.         tx.get("txcity1");  
  51.         List<Object> objs = tx.exec();  
  52.           
  53.         for (Object object : objs) {  
  54.             System.out.println(object.toString());  
  55.         }  
  56.     }  
  57.       
  58.     public static void main(String[] args) {  
  59.         RedisTXDemo redisTXDemo = new RedisTXDemo();  
  60.         redisTXDemo.txDemo();  
  61.         redisTXDemo.txHasExDemo();  
  62.     }  
  63. }  
时间: 2024-07-29 04:14:39

Java操作redis的相关文章

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据            Redis简介            Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案.            Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器.           

Java操作Redis数据库方法(简单)

package Redis;        import java.util.HashMap;  import java.util.List;  import java.util.Map;       import redis.clients.jedis.Jedis;        public class Demo {                /**          * @param args          */          public static void main(S

Java操作Redis DB的例子

package org.jack.redis; import java.util.HashMap;   import java.util.List;   import java.util.Map;   import redis.clients.jedis.Jedis;      public class RedisTest {       public static void main(String[] args) {                      //连接redis服务  :第一个

java操作redis: 将string、list、map、自定义的对象保存到redis中

import java.util.HashMap; import java.util.List; import java.util.Map; import redis.clients.jedis.Jedis; public class redis { public static void main(String[] args) { // 连接redis服务 Jedis jedis = new Jedis("127.0.0.1", 6379); // 密码验证-如果你没有设置redis密

Java中使用Jedis操作Redis

使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip 1 package com.test; 2 3 import java.util.HashMap; 4 im

redis入门及java操作

redis 命令可以去菜鸟教程http://www.runoob.com/redis/redis-tutorial.html 或者以下地址去学习http://www.cnblogs.com/huangxincheng/category/755864.html redis在linux下的安装及启动 下载地址:http://redis.io/download,下载最新文档版本. 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wget http://download.redis.io/r

【Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池

转载请注明出处http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 如果我们使用Java操作Redis 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.cli

python操作redis

[Redis] redis-cli 命令总结 Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用. 在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法.下面将Redis提供的命令做一总结. 官网命令列表:http://redis.io/commands (英文)   1.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 2.对value操作的命令 exists(key):

Java操作Mongo

Java操作Mongo // 创建连接 MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017), new ServerAddress("localhost", 27018), new ServerAddress("localhost", 27019))); //使用mydb数据库 DB db = mongoClien