Java操作redis很简单。创建一个普通的Java工程。然后导入redis依赖的jar包。jar包我已经上传了。
入门级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了,但是自己写时一定要记着关闭连接
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
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
103. mcity.put("c1", "桂林");
104. mcity.put("c2", "天津");
105. mcity.put("c3", "合肥");
106. jedis.hmset("Mcity2", mcity);
107. List
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();
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. }
34.
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
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
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. }
从上面的方法可以看出,redis提供的接口方法名和redis-cli客户端提供的方法名是一样的,所以,只要对redis客户端的命令熟悉,那么Java操作redis就不是问题
¥29.8
¥9.9
¥59.8