JavaWeb23.3【Redis:操作redis数据库的java客户端-Jedis】
1 package com.haifei.jedis.test; 2 3 import org.junit.Test; 4 import redis.clients.jedis.Jedis; 5 6 public class JedisTest { 7 8 /** 9 * 快速入门jedis 10 */ 11 @Test 12 public void test1(){ 13 //1 获取连接 14 Jedis jedis = new Jedis("localhost", 6379); //或127.0.0.1;远程连接时参数1为目标主机IP 15 16 //2 操作 17 jedis.set("username", "zhangsan"); 18 19 //3 关闭连接释放资源 20 jedis.close(); 21 } 22 }
1 package com.haifei.jedis.test; 2 3 import com.haifei.jedis.util.JedisPoolUtils; 4 import org.junit.Test; 5 import redis.clients.jedis.Jedis; 6 import redis.clients.jedis.JedisPool; 7 import redis.clients.jedis.JedisPoolConfig; 8 9 import java.util.List; 10 import java.util.Map; 11 import java.util.Set; 12 13 /** 14 * jedis的测试类 15 * 注意:运行以下测试时,须打开服务端D:\Program Files\redis-2.8.9\redis-server.exe,不然报错 16 */ 17 public class JedisTest { 18 19 20 /** 21 * 快速入门jedis 22 */ 23 @Test 24 public void test1(){ 25 //1 获取连接 26 Jedis jedis = new Jedis("localhost", 6379); //或127.0.0.1;远程连接时参数1为目标主机IP 27 28 //2 操作 29 jedis.set("username", "zhangsan"); 30 31 //3 关闭连接释放资源 32 jedis.close(); 33 } 34 35 36 /** 37 * redis数据结构:字符串类型string 38 */ 39 @Test 40 public void test2(){ 41 Jedis jedis = new Jedis(); //构造连接本机可以不用传参,因为默认值即为"localhost", 6379 42 43 jedis.set("username", "zhangsan"); 44 String username = jedis.get("username"); 45 System.out.println(username); //zhangsan 46 47 //可以使用setex()方法存储可以指定过期时间的 key value 48 jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对 49 //应用:用户注册邮箱激活码,短信验证码有效时长等 50 51 jedis.close(); 52 } 53 54 55 /** 56 * redis数据结构:哈希类型hash(map格式) 57 */ 58 @Test 59 public void test3(){ 60 Jedis jedis = new Jedis(); 61 62 // 存储hash 63 jedis.hset("user","name","lisi"); 64 jedis.hset("user","age","23"); 65 jedis.hset("user","gender","female"); 66 67 // 获取hash 68 String name = jedis.hget("user", "name"); 69 System.out.println(name); //lisi 70 71 // 获取hash中的所有map数据 72 Map<String, String> user = jedis.hgetAll("user"); 73 //遍历Map集合user 74 Set<String> keySet = user.keySet(); 75 for (String key : keySet) { 76 String value = user.get(key); 77 System.out.println(key + ":" + value); 78 } 79 /* 无序 80 gender:female 81 name:lisi 82 age:23 83 */ 84 85 jedis.close(); 86 } 87 88 89 /** 90 * redis数据结构:列表类型list(linkedlist格式,支持重复元素) 91 */ 92 @Test 93 public void test4() { 94 Jedis jedis = new Jedis(); 95 96 // list 存储 97 jedis.lpush("mylist","a","b","c"); //从左边存 98 jedis.rpush("mylist","d","e","f"); //从右边存 99 // c b a d e f 100 101 // list 范围获取 102 List<String> mylist = jedis.lrange("mylist", 0, -1); 103 System.out.println(mylist); //[c, b, a, d, e, f] 104 105 // list 弹出 106 String element1 = jedis.lpop("mylist"); 107 System.out.println(element1); //c [b, a, d, e, f] 108 String element2 = jedis.rpop("mylist"); 109 System.out.println(element2); //f [b, a, d, e] 110 111 // list 范围获取 112 List<String> mylist2 = jedis.lrange("mylist", 0, -1); 113 System.out.println(mylist2); //[b, a, d, e] 114 115 jedis.close(); 116 } 117 118 119 /** 120 * redis数据结构:集合类型set(不允许重复元素) 121 */ 122 @Test 123 public void test5() { 124 Jedis jedis = new Jedis(); 125 126 // set 存储 127 jedis.sadd("myset","java","python","c++"); 128 // set 获取 129 Set<String> myset = jedis.smembers("myset"); 130 System.out.println(myset); //[c++, java, python] 131 132 jedis.close(); 133 } 134 135 136 /** 137 * redis数据结构:有序集合类型sortedset(不允许重复元素,且元素有顺序) 138 */ 139 @Test 140 public void test6() { 141 Jedis jedis = new Jedis(); 142 143 // sortedset 存储 144 jedis.zadd("mysortedset",3,"亚瑟"); 145 jedis.zadd("mysortedset",30,"后裔"); 146 jedis.zadd("mysortedset",55,"孙悟空"); 147 // sortedset 获取 148 Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1); 149 System.out.println(mysortedset); //[亚瑟, 后裔, 孙悟空] 150 151 jedis.close(); 152 } 153 154 155 /** 156 * jedis连接池使用 157 */ 158 @Test 159 public void test7(){ 160 //0.创建一个配置对象 161 JedisPoolConfig config = new JedisPoolConfig(); 162 config.setMaxTotal(50); 163 config.setMaxIdle(10); 164 165 //1.创建Jedis连接池对象 166 JedisPool jedisPool = new JedisPool(config,"localhost",6379); 167 168 //2.获取连接 169 Jedis jedis = jedisPool.getResource(); 170 171 //3. 使用 172 jedis.set("hehe","heihei"); 173 174 //4. 关闭 归还到连接池中 175 jedis.close(); 176 } 177 178 179 /** 180 * jedis连接池工具类使用 181 */ 182 @Test 183 public void test8(){ 184 //通过连接池工具类获取Jedis连接池对象 185 Jedis jedis = JedisPoolUtils.getJedis(); 186 187 //3. 使用 188 jedis.set("hello","world"); 189 190 //4. 关闭 归还到连接池中 191 jedis.close(); 192 } 193 194 }
1 package com.haifei.jedis.util; 2 3 import redis.clients.jedis.Jedis; 4 import redis.clients.jedis.JedisPool; 5 import redis.clients.jedis.JedisPoolConfig; 6 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.util.Properties; 10 11 /** 12 * JedisPool工具类 13 * 加载配置文件(src下jedis.properties),配置连接池的参数 14 * 提供获取连接的方法 15 */ 16 public class JedisPoolUtils { 17 18 private static JedisPool jedisPool; 19 20 static { 21 //读取配置文件 22 InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties"); 23 //创建Properties对象 24 Properties prop = new Properties(); 25 //关联文件 26 try { 27 prop.load(is); 28 } catch (IOException e) { 29 e.printStackTrace(); 30 } 31 //获取配置数据,设置到JedisPoolConfig中 32 JedisPoolConfig config = new JedisPoolConfig(); 33 config.setMaxTotal(Integer.parseInt(prop.getProperty("maxTotal"))); 34 config.setMaxIdle(Integer.parseInt(prop.getProperty("maxIdle"))); 35 //初始化连接池对象JedisPool 36 jedisPool = new JedisPool(config, prop.getProperty("host"), Integer.parseInt(prop.getProperty("port"))); 37 } 38 39 /** 40 * 获取连接 41 * @return 42 */ 43 public static Jedis getJedis(){ 44 return jedisPool.getResource(); 45 } 46 47 48 }
1 2 3 4 5 6 | jedis.properties host=127.0.0.1 port=6379 maxTotal=50 maxIdle=10 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!