【Redis】使用java代码操作Redis,以及在实际应用的场景

【Redis】使用java代码操作Redis,以及在实际应用的场景_第1张图片

一,Java代码操作Redis

1.1在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java

如下图:关于如何使用window安装Redis,我已在上一篇博客中详细介绍了!!!

【Redis】使用java代码操作Redis,以及在实际应用的场景_第2张图片

使用我们的Java开发工具去连接到 redis 服务

1.2导入pom依赖:


    redis.clients
    jedis
    2.9.0

【Redis】使用java代码操作Redis,以及在实际应用的场景_第3张图片

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 的各种类型值的增删改查!!!

【Redis】使用java代码操作Redis,以及在实际应用的场景_第4张图片

二,Java操作Redis

2.1Redis Java String(字符串) 实例

 System.out.println(("--------获取字符串存储的数据并输出-----------"));
       jedis.set("zking", "获取到zking字符值");
       jedis.set("baidu", "获取到baidu字符值");
       // 获取存储的数据并输出
       System.out.println("redis 存储的字符串为: "+ jedis.get("zking"));

【Redis】使用java代码操作Redis,以及在实际应用的场景_第5张图片

【Redis】使用java代码操作Redis,以及在实际应用的场景_第6张图片

2.2Redis Java List(列表) 实例

 System.out.println(("--------获取List存储的数据并输出-----------"));
       jedis.lpush("tools-list","idea");
       jedis.lpush("tools-list", "eclips");
       // 获取存储的数据并输出
       List list = jedis.lrange("tools-list", 0 ,1);
       for(int i=0; i

【Redis】使用java代码操作Redis,以及在实际应用的场景_第7张图片

【Redis】使用java代码操作Redis,以及在实际应用的场景_第8张图片

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 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);

【Redis】使用java代码操作Redis,以及在实际应用的场景_第9张图片

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));

【Redis】使用java代码操作Redis,以及在实际应用的场景_第10张图片

2.5Redis Java 集合(map)

      System.out.println(("--------获取map的数据并输出-----------"));
      jedis.select(2);
      Map  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 map){
          if (map != null && map.size()>0){
              Set keys =map.keySet();
              for (String k :keys){
                  jedis.hset(key,k,map.get(k));
              }
          }
      }
 
    
}

三,Redis在项目中的实际应用

Redis一般用于存储和管理缓存数据,常用于应用程序中需要快速读写的场景。Redis还被广泛用于消息队列、计数器、实时排行榜等应用场景。

如以下:这里的1的状态就已经定好了是代表性别是男,2的状态就已经定好了是代表性别是女。我们项目中所使用的也是这样的Json格式的数据,用于存储一些基本不会改变的数据,其他地方会使用到的数据。像字典数据,系统参数数据

【Redis】使用java代码操作Redis,以及在实际应用的场景_第11张图片

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 lists = new ArrayList();
        //将数字转成文字
        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);
        }
 
    }

效果:

【Redis】使用java代码操作Redis,以及在实际应用的场景_第12张图片

你可能感兴趣的:(redis,java,数据库)