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 做分布式缓存,结合布隆过滤器、热点数据预热和设置适当的过期时间,保护系统免受无效查询和大规模缓存失效的影响。

相关推荐
C雨后彩虹2 小时前
任务最优调度
java·数据结构·算法·华为·面试
heartbeat..2 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
Jing_jing_X2 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
元Y亨H4 小时前
Nacos - 服务发现
java·微服务
麦聪聊数据4 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
微露清风4 小时前
系统性学习C++-第十八讲-封装红黑树实现myset与mymap
java·c++·学习
dasi02274 小时前
Java趣闻
java
AC赳赳老秦5 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
阿波罗尼亚5 小时前
Tcp SSE Utils
android·java·tcp/ip
susu10830189115 小时前
springboot3.5.8整合minio8.5.9
java·springboot