Java操作redis-阿里云开发者社区

开发者社区> 数据库> 正文

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. }  

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章