当前位置:   article > 正文

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

redis在代码中的使用

一,Java代码操作Redis

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

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

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

1.2导入pom依赖:

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>2.9.0</version>
  5. </dependency>

1.3创建类去连接:

  1. public static void main(String[] args) {
  2. //连接本地的 Redis 服务
  3. Jedis jedis = new Jedis("127.0.0.1",6379);
  4. //密码
  5. jedis.auth("123456");
  6. System.out.println("连接成功");
  7. //查看服务是否运行
  8. System.out.println("服务器正在运行: "+jedis.ping());
  9. }

成功连接会返回PONG

这里我们就连接上了redis,接下来就在类中使用Java的方式去实例redis 的各种类型值的增删改查!!!

二,Java操作Redis

2.1Redis Java String(字符串) 实例

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

2.2Redis Java List(列表) 实例

  1. System.out.println(("--------获取List存储的数据并输出-----------"));
  2. jedis.lpush("tools-list","idea");
  3. jedis.lpush("tools-list", "eclips");
  4. // 获取存储的数据并输出
  5. List<String> list = jedis.lrange("tools-list", 0 ,1);
  6. for(int i=0; i<list.size(); i++) {
  7. System.out.println("列表项为: "+list.get(i));
  8. }

2.3Redis Java Hash 实例

  1. System.out.println(("--------获取哈希存储的数据并输出-----------"));
  2. jedis.hset("java_goods","gname","iPhone15");
  3. jedis.hset("java_goods","gprice","$99999");
  4. jedis.hset("java_goods","gnum","12");
  5. // #获取指定的字段值
  6. System.out.println("当前获取的是"+jedis.hget("java_goods", "gprice"));
  7. // #删除指定的字段值
  8. jedis.hdel("java_goods","gprice");
  9. // #查询指定key的所有字段
  10. Map<String, String> java_goods_map = jedis.hgetAll("java_goods");
  11. System.out.println(java_goods_map);
  12. // #查询指定key中的字段是否存在
  13. Boolean java_goods = jedis.hexists("java_goods","gprice");
  14. System.out.println("查询指定key中的字段是否存在"+java_goods);
  15. // #获取指定key中的长度
  16. Long java_goods_len = jedis.hlen("java_goods");
  17. System.out.println("指定key中的长度是:"+java_goods_len);

2.4Redis Java 集合(Set)

  1. jedis.select(3);//指定数据库
  2. //lpush key value1 value2 value3 将一个或多个值插入到列表头部
  3. jedis.lpush("List_hobby", "sing", "jump", "rap", "basketball");
  4. //llen key 获取列表的长度
  5. System.out.println(jedis.llen("List_hobby"));
  6. //lindex key index 根据索引获取列表中的元素
  7. System.out.println(jedis.lindex("List_hobby", 2));
  8. //lrange key start sop 查看指定范围内的元素
  9. System.out.println(jedis.lrange("List_hobby", 0, 3));

2.5Redis Java 集合(map)

  1. System.out.println(("--------获取map的数据并输出-----------"));
  2. jedis.select(2);
  3. Map <String,String> map= new HashMap <>();
  4. map.put("name","lya");
  5. map.put("age","99");
  6. map.put("vehicle","奥迪A8");
  7. RedisUtil.setHashMap(jedis,"user_map",map);

这里我们插入数据方法是一条一条的,这样就会让我们的效率变慢,所以我们封装一个工具类让我们调用

  1. package com.zking.ssm.util;
  2. import redis.clients.jedis.Jedis;
  3. import java.util.Map;
  4. import java.util.Set;
  5. /**
  6. * @author 程序猿-小李哥
  7. * @site www.xiaolige.com
  8. * @company 猪八戒有限集团
  9. * @create 2023-11-03-19:12
  10. */
  11. public class RedisUtil {
  12. // hash批量添加
  13. public static void setHashMap(Jedis jedis, String key, Map<String,String> map){
  14. if (map != null && map.size()>0){
  15. Set<String> keys =map.keySet();
  16. for (String k :keys){
  17. jedis.hset(key,k,map.get(k));
  18. }
  19. }
  20. }
  21. }

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

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

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

3.2使用Redis的实际应用场景示例:会议状态

实体类:

  1. package com.lya.reids;
  2. import lombok.Data;
  3. @Data
  4. public class Status {
  5. private Integer id;
  6. private String name;
  7. private Integer zt;
  8. public Status(Integer id, String name, Integer zt) {
  9. this.id = id;
  10. this.name = name;
  11. this.zt = zt;
  12. }
  13. }

自定义注解,用于标注状态的文本表示

  1. package com.lya.reids;
  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. @Retention(RetentionPolicy.RUNTIME)
  7. @Target(ElementType.FIELD)
  8. public @interface status_value {
  9. String value() default "";
  10. }

接下来,可以编写一个工具类,用于获取状态的文本表示。该工具类通过反射获取对象的状态属性上的注解值,并返回该值作为文本表示。

StatusTextUtil :

  1. package com.lya.utlils;
  2. import com.lya.reids.status_value;
  3. import com.lya.reids.status_value;
  4. import java.lang.reflect.Field;
  5. public class StatusTextUtil {
  6. public static String getStatusText(Object obj) {
  7. Class<?> clazz = obj.getClass();
  8. Field[] fields = clazz.getDeclaredFields();
  9. for (Field field : fields) {
  10. if (field.isAnnotationPresent(status_value.class)) {
  11. try {
  12. field.setAccessible(true);
  13. int status = field.getInt(obj);
  14. return field.getAnnotation(status_value.class).value();
  15. } catch (IllegalAccessException e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. }
  20. return null;
  21. }
  22. }

建立一个模拟数据:

  1. public static void main(String[] args) throws NoSuchFieldException {
  2. //host : IP port : 端口号
  3. Jedis jedis = new Jedis("localhost", 6379);
  4. //登入密码
  5. jedis.auth("123456");
  6. //查看是否连接成功
  7. System.out.println(jedis.ping());
  8. //进入为3的数据库
  9. jedis.select(3);
  10. //增加
  11. jedis.set("1","待开状态");
  12. jedis.set("2","取消会议");
  13. jedis.set("3","驳回会议");
  14. jedis.set("4","进行中");
  15. //数据模拟
  16. List<Status> lists = new ArrayList<Status>();
  17. //将数字转成文字
  18. Status u1 = new Status(1,"会议状态",1);
  19. Status u2 = new Status(2,"会议状态",2);
  20. Status u3 = new Status(3,"会议状态",3);
  21. lists.add(u1);
  22. lists.add(u2);
  23. lists.add(u3);
  24. for (Status u: lists) {
  25. String hy = jedis.get(u.getZt()+"");
  26. String text = StatusTextUtil.getStatusText(u);
  27. String hy_val = text=hy;
  28. System.out.println("会议:"+u.getName()+",会议状态:"+hy_val);
  29. }
  30. }

效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/948899
推荐阅读
相关标签
  

闽ICP备14008679号