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

  

posted @   yub4by  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示