Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

  • java连接上redis
  • java操作redis的常见类型数据存储
  • redis中的项目应用

1.java连接上redis

java 复制代码
package com.zlj.ssm.redis;

import redis.clients.jedis.Jedis;

/**
 * @author zlj
 * @create 2023-11-03 19:27
 */
public class Demo1 {
    public static void main(String[] args) {
//        建立连接
        Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.out.println(jedis.ping());
    }
}

2.java操作redis的常见类型数据存储

java 复制代码
package com.zlj.ssm.redis;

import redis.clients.jedis.Jedis;

/**
 * @author zlj
 * @create 2023-11-03 19:27
 */
public class Demo2 {
    public static void main(String[] args) {
//        建立连接
        Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.out.println(jedis.ping());

//        String的操作
//        set get del setex ttl
        jedis.select(3);
        jedis.set("test","牛逼");
        System.out.println(jedis.get("test"));
        jedis.setex("time",15,"运行需要花多少时间");
        System.out.println(jedis.ttl("time"));

        
    }
}
java 复制代码
package com.zlj.ssm.redis;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zlj
 * @create 2023-11-03 19:27
 */
public class Demo3 {
    public static void main(String[] args) {
//        建立连接
        Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.out.println(jedis.ping());

//        hset key attr1 val1 attr2 val2
//jedis.hset("user","name","liubing");
//jedis.hset("user","hobby","spa");
//jedis.hset("user","age","20");

Map map=new HashMap();
map.put("name","liuwen");
map.put("hobby","liuzhi");
map.put("age","28");
redisUtils.setHashMap(jedis,"user",map);

System.out.println(jedis.hget("user", "hobby"));
System.out.println(jedis.hgetAll("user"));
//删除
//long hdel=jedis.hdel("user","sex");
//jedis.del("user");
    }
}
java 复制代码
package com.zlj.ssm.redis;

import redis.clients.jedis.Jedis;

/**
 * @author zlj
 * @create 2023-11-04 17:54
 */
public class Demo4 {
    public static void main(String[] args) {
//        建立连接
        Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.out.println(jedis.ping());

        jedis.lpush("hobby","篮球","羽毛球","乒乓球","依优库","唱歌");
        System.out.println(jedis.lindex("hobby", 1));
        System.out.println(jedis.lrange("hobby", 0, 3));


    }
}
java 复制代码
package com.zlj.ssm.redis;

import redis.clients.jedis.Jedis;

import java.util.Map;
import java.util.Set;

/**
 * @author zlj
 * @create 2023-11-04 17:09
 */
public class redisUtils {
    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){
//                 key =name,hobby,age
//                 value map.get(name);
                jedis.hset(key,k,map.get(k));
             }

         }
    }
}

3.redis中的项目应用

redis一般用在哪?

存储基本不会变化的数据,然后这些数据又被多个地方使用

redix怎么用 用String

将存储的数据转换成json串,进行存储
在 Java 中使用 Redis 存储 JSON 对象,可以使用 Redis 的 String 类型来保存 JSON 字符串。以下是一个示例代码,演示了如何使用 Jedis 客户端在 Redis 中存储和获取 JSON 对象:

java 复制代码
import redis.clients.jedis.Jedis;

public class RedisExample {
    public static void main(String[] args) {
        // 连接 Redis 服务器
        Jedis jedis = new Jedis("localhost");

        // 创建一个 JSON 对象
        String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";

        // 存储 JSON 对象到 Redis
        jedis.set("person", jsonString);

        // 从 Redis 获取 JSON 对象
        String storedJsonString = jedis.get("person");
        System.out.println("Stored JSON: " + storedJsonString);

        // 关闭 Redis 连接
        jedis.close();
    }
}

在上述示例中,我们首先使用 Jedis 的构造函数连接到 Redis 服务器。然后,我们创建一个 JSON 字符串并将其存储在 Redis 中,使用 set 方法将 JSON 字符串作为值存储在名为 "person" 的键中。接下来,我们使用 get 方法从 Redis 中获取存储的 JSON 字符串,并打印出获取到的值。

请注意,Redis 存储的是 JSON 字符串,而不是 JSON 对象。如果你需要在 Java 中处理 JSON 对象,你可以使用 JSON 解析库,如 Jackson、Gson 等,将 JSON 字符串转换为 Java 对象进行操作。

确保你已经将 Jedis 客户端库添加到你的 Java 项目中。你可以通过 Maven 或 Gradle 等构建工具来添加依赖,并在代码中导入 redis.clients.jedis.Jedis 类。

使用 Jackson 库将 JSON 字符串转换为 Java 对象:

java 复制代码
import com.fasterxml.jackson.databind.ObjectMapper; // import jackson package  
  
String jsonString = "{\"name\":\"John\", \"age\":30}"; // JSON string  
ObjectMapper mapper = new ObjectMapper(); // create an instance of ObjectMapper  
Person person = mapper.readValue(jsonString, Person.class); // convert json string to java object

在实际应用中广泛使用 Redis 作为数据缓存、分布式锁、消息队列等的解决方案。下面是一些常见的 Java Redis 项目应用示例:

数据缓存:使用 Redis 作为缓存,将热门或频繁访问的数据存储在 Redis 中,减少对底层数据存储系统(如数据库)的访问压力,提高系统的读取性能。

分布式锁:使用 Redis 的原子操作和过期时间特性,实现分布式锁功能,保证在分布式系统中的临界资源互斥访问,避免并发问题。

会话管理:使用 Redis 存储用户登录信息、会话数据等,实现分布式用户会话管理,便于多个应用服务间共享用户状态。

计数器和限流:使用 Redis 的计数器功能统计页面访问次数、API 调用次数等,还可以结合 Redis 的过期时间和持久化特性实现限流功能,控制请求的频率和并发量。

消息队列:使用 Redis 的发布订阅功能和列表数据结构,实现简单的消息队列,支持异步消息传递,解耦系统各个组件。

地理位置服务:使用 Redis 的地理位置(Geo)功能,记录位置信息,实现地理位置的查询和附近信息的搜索。

分布式缓存穿透和雪崩保护:使用 Redis 做分布式缓存,结合布隆过滤器、热点数据预热和设置适当的过期时间,保护系统免受无效查询和大规模缓存失效的影响。

相关推荐
Re_zero1 小时前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记1 小时前
Spring Boot条件注解详解
java·spring boot
程序员清风19 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
李广坤20 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
皮皮林55120 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing1 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠2 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide2 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code