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

相关推荐
gopher95113 分钟前
final,finally,finalize的区别
java·开发语言·jvm
m0_687399849 分钟前
QT combox 前缀匹配
开发语言·数据库·qt
Jason-河山11 分钟前
利用 Python 爬虫采集 1688商品详情
java·http
计算机源码社12 分钟前
分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
java·python·php·毕业设计项目·计算机课程设计·计算机毕业设计源码·计算机毕业设计选题
Zww089115 分钟前
idea插件市场安装没反应
java·ide·intellij-idea
夜雨翦春韭17 分钟前
【代码随想录Day31】贪心算法Part05
java·数据结构·算法·leetcode·贪心算法
计算机学姐17 分钟前
基于微信小程序的调查问卷管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
problc28 分钟前
Android 组件化利器:WMRouter 与 DRouter 的选择与实践
android·java
程序员南飞2 小时前
ps aux | grep smart_webrtc这条指令代表什么意思
java·linux·ubuntu·webrtc
弥琉撒到我2 小时前
微服务swagger解析部署使用全流程
java·微服务·架构·swagger