赞
踩
1.1在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java
如下图:关于如何使用window安装Redis,我已在上一篇博客中详细介绍了!!!
使用我们的Java开发工具去连接到 redis 服务
1.2导入pom依赖:
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
1.3创建类去连接:
- public static void main(String[] args) {
- //连接本地的 Redis 服务
- Jedis jedis = new Jedis("127.0.0.1",6379);
- //密码
- jedis.auth("123456");
- System.out.println("连接成功");
- //查看服务是否运行
- System.out.println("服务器正在运行: "+jedis.ping());
- }
成功连接会返回PONG
这里我们就连接上了redis,接下来就在类中使用Java的方式去实例redis 的各种类型值的增删改查!!!
2.1Redis Java String(字符串) 实例
- System.out.println(("--------获取字符串存储的数据并输出-----------"));
- jedis.set("zking", "获取到zking字符值");
- jedis.set("baidu", "获取到baidu字符值");
- // 获取存储的数据并输出
- System.out.println("redis 存储的字符串为: "+ jedis.get("zking"));
2.2Redis Java List(列表) 实例
- System.out.println(("--------获取List存储的数据并输出-----------"));
- jedis.lpush("tools-list","idea");
- jedis.lpush("tools-list", "eclips");
- // 获取存储的数据并输出
- List<String> list = jedis.lrange("tools-list", 0 ,1);
- for(int i=0; i<list.size(); i++) {
- System.out.println("列表项为: "+list.get(i));
- }
2.3Redis Java Hash 实例
-
- System.out.println(("--------获取哈希存储的数据并输出-----------"));
-
- jedis.hset("java_goods","gname","iPhone15");
- jedis.hset("java_goods","gprice","$99999");
- jedis.hset("java_goods","gnum","12");
-
-
- // #获取指定的字段值
- System.out.println("当前获取的是"+jedis.hget("java_goods", "gprice"));
-
- // #删除指定的字段值
- jedis.hdel("java_goods","gprice");
-
- // #查询指定key的所有字段
- Map<String, String> java_goods_map = jedis.hgetAll("java_goods");
- System.out.println(java_goods_map);
-
- // #查询指定key中的字段是否存在
- Boolean java_goods = jedis.hexists("java_goods","gprice");
- System.out.println("查询指定key中的字段是否存在"+java_goods);
-
- // #获取指定key中的长度
- Long java_goods_len = jedis.hlen("java_goods");
- System.out.println("指定key中的长度是:"+java_goods_len);
2.4Redis Java 集合(Set)
- jedis.select(3);//指定数据库
- //lpush key value1 value2 value3 将一个或多个值插入到列表头部
- jedis.lpush("List_hobby", "sing", "jump", "rap", "basketball");
- //llen key 获取列表的长度
- System.out.println(jedis.llen("List_hobby"));
- //lindex key index 根据索引获取列表中的元素
- System.out.println(jedis.lindex("List_hobby", 2));
- //lrange key start sop 查看指定范围内的元素
- System.out.println(jedis.lrange("List_hobby", 0, 3));
2.5Redis Java 集合(map)
- System.out.println(("--------获取map的数据并输出-----------"));
- jedis.select(2);
- Map <String,String> map= new HashMap <>();
- map.put("name","lya");
- map.put("age","99");
- map.put("vehicle","奥迪A8");
- RedisUtil.setHashMap(jedis,"user_map",map);
这里我们插入数据方法是一条一条的,这样就会让我们的效率变慢,所以我们封装一个工具类让我们调用
- package com.zking.ssm.util;
-
- import redis.clients.jedis.Jedis;
-
- import java.util.Map;
- import java.util.Set;
-
- /**
- * @author 程序猿-小李哥
- * @site www.xiaolige.com
- * @company 猪八戒有限集团
- * @create 2023-11-03-19:12
- */
- public class RedisUtil {
- // hash批量添加
- public static void setHashMap(Jedis jedis, String key, Map<String,String> map){
- if (map != null && map.size()>0){
- Set<String> keys =map.keySet();
- for (String k :keys){
- jedis.hset(key,k,map.get(k));
- }
- }
- }
-
-
- }
Redis一般用于存储和管理缓存数据,常用于应用程序中需要快速读写的场景。Redis还被广泛用于消息队列、计数器、实时排行榜等应用场景。
如以下:这里的1的状态就已经定好了是代表性别是男,2的状态就已经定好了是代表性别是女。我们项目中所使用的也是这样的Json格式的数据,用于存储一些基本不会改变的数据,其他地方会使用到的数据。像字典数据,系统参数数据
3.2使用Redis的实际应用场景示例:会议状态
实体类:
- package com.lya.reids;
-
- import lombok.Data;
-
-
- @Data
- public class Status {
-
- private Integer id;
- private String name;
- private Integer zt;
-
- public Status(Integer id, String name, Integer zt) {
- this.id = id;
- this.name = name;
- this.zt = zt;
- }
-
- }
自定义注解,用于标注状态的文本表示
- package com.lya.reids;
-
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
-
-
-
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.FIELD)
- public @interface status_value {
- String value() default "";
- }
接下来,可以编写一个工具类,用于获取状态的文本表示。该工具类通过反射获取对象的状态属性上的注解值,并返回该值作为文本表示。
StatusTextUtil :
- package com.lya.utlils;
-
- import com.lya.reids.status_value;
- import com.lya.reids.status_value;
-
- import java.lang.reflect.Field;
-
-
- public class StatusTextUtil {
-
- public static String getStatusText(Object obj) {
- Class<?> clazz = obj.getClass();
- Field[] fields = clazz.getDeclaredFields();
- for (Field field : fields) {
- if (field.isAnnotationPresent(status_value.class)) {
- try {
- field.setAccessible(true);
- int status = field.getInt(obj);
- return field.getAnnotation(status_value.class).value();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- return null;
- }
- }
建立一个模拟数据:
- public static void main(String[] args) throws NoSuchFieldException {
-
- //host : IP port : 端口号
- Jedis jedis = new Jedis("localhost", 6379);
- //登入密码
- jedis.auth("123456");
- //查看是否连接成功
- System.out.println(jedis.ping());
- //进入为3的数据库
- jedis.select(3);
- //增加
- jedis.set("1","待开状态");
- jedis.set("2","取消会议");
- jedis.set("3","驳回会议");
- jedis.set("4","进行中");
-
-
- //数据模拟
- List<Status> lists = new ArrayList<Status>();
- //将数字转成文字
- Status u1 = new Status(1,"会议状态",1);
- Status u2 = new Status(2,"会议状态",2);
- Status u3 = new Status(3,"会议状态",3);
- lists.add(u1);
- lists.add(u2);
- lists.add(u3);
-
-
- for (Status u: lists) {
- String hy = jedis.get(u.getZt()+"");
-
- String text = StatusTextUtil.getStatusText(u);
- String hy_val = text=hy;
- System.out.println("会议:"+u.getName()+",会议状态:"+hy_val);
- }
-
- }
效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。