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

一,Java代码操作Redis

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

二,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一般用于存储和管理缓存数据,常用于应用程序中需要快速读写的场景。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);
        }
 
    }

效果:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: RedisJava 应用非常广泛,以下是几个常见的应用场景: 1. 缓存:Redis 作为内存数据库,可以用作缓存来提高应用程序的性能。Java 开发人员可以使用 Redisson 等库来将 Redis 作为缓存使用。 2. 分布式锁:Redis 通过 SETNX 命令可以轻松实现分布式锁。Java 开发人员可以使用 Redisson 等库来实现分布式锁。 3. 队列:Redis 的 List 数据结构可以用作队列,Java 开发人员可以通过 jedis 等库来操作 Redis 的 List 数据结构来实现队列。 4. 发布/订阅:Redis 的发布/订阅功能可以用于实现消息系统,Java 开发人员可以通过 jedis 等库来操作 Redis 的发布/订阅功能。 5. 实时统计:Redis 的计数器和排序集合可以用于实时统计,Java 开发人员可以使用 jedis 等库来操作 Redis 的计数器和排序集合来实现实时统计。 总之,RedisJava 应用非常广泛,几乎可以应用于任何需要高性能、分布式的场景。 ### 回答2: Redis是一款开源的、高性能的键值对存储系统,可以应用Java代码的各种场景。以下是RedisJava代码的一些具体应用: 1. 缓存管理:Redis可以作为缓存服务,将查询的结果存储在内存,加快数据的读取速度。在Java代码,可以使用Redis的相关API来读取和写入缓存,有效减轻数据库的负载。 2. 分布式锁:在分布式环境,为了保证多个节点对共享资源的访问顺序,可以使用Redis的原子操作来实现分布式锁。通过在Redis存储锁的状态和超时时间,Java代码可以使用Redis的API来实现对共享资源的安全访问。 3. 消息队列:Redis的发布/订阅机制可以用作消息队列,可以实现消息的异步处理。Java代码可以通过Redis的API发布消息,其他的Java代码可以通过订阅相应的频道来接收消息并进行后续处理。 4. 计数器和统计:在需要进行计数和统计的场景,可以使用Redis的计数器功能。Java代码可以使用Redis的API进行计数操作,并获取计数结果进行后续的业务逻辑处理。 5. 分布式会话管理:在分布式环境,需要实现会话的共享和管理。Redis可以作为会话存储,Java代码可以使用Redis的API来读取和写入会话数据,实现分布式环境下的会话管理。 总之,RedisJava代码的具体应用非常广泛,几乎可以应用于任何需要高性能、分布式存储和处理的场景。通过使用Redis的相关API,Java代码可以简单快速地实现相关功能,提高系统的性能和可扩展性。 ### 回答3: 在Java代码Redis可以被用于多个方面的具体应用。 首先,Redis可以被用作缓存。在Java应用,经常会有一些需要频繁访问的数据,如数据库查询结果、计算结果等。通过将这些数据存储在Redis缓存,可以避免频繁的数据库或计算操作,从而提高应用的性能和响应速度。在Java代码,可以使用Jedis或Lettuce等Redis客户端库,通过简单的API调用来进行缓存的读取和写入操作。 其次,Redis还可以用于实现消息队列。在分布式系统,有时候需要将一些任务或消息发送给其他服务进行处理。使用Redis的List数据结构,可以通过将任务或消息写入List的方式实现简单的消息队列。Java代码可以通过调用lpush或rpush命令向Redis写入任务或消息,而其他服务则可以通过调用lpop或rpop命令从Redis读取任务或消息进行处理。 另外,Redis还可以被用作计数器或限流器。在一些需要统计用户行为或实现限制访问频率的场景,可以使用Redis的计数器或限流器功能。通过对Redis的特定键进行自增或自减操作,可以实现对用户行为的统计,并根据统计结果进行相应的处理。使用Java代码进行操作时,可以通过调用incr、decr等命令来实现对Redis计数器的增减操作。 除此之外,Redis还可以用于实现分布式锁、持久化存储、实时统计等功能。在Java代码,可以通过调用相应的Redis命令,配合使用Redisson等分布式框架,实现这些功能。 综上所述,RedisJava代码的具体应用包括缓存、消息队列、计数器、限流器、分布式锁、持久化存储、实时统计等。通过使用Redis,可以为Java应用提供高效、可靠的数据管理和处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值