当前位置: 首页 > news >正文

使用Java操作Redis


文章目录

  • 常用Redis键操作命令
  • 使用Java操作Redis
    • 配置 Redis 连接信息
    • 创建 Maven 项目结构
  • 操作字符串
  • 操作列表
  • 操作集合
  • 操作散列
  • 操作有序集合
  • 总结


报错解决办法:
在这里插入图片描述
当使用redis-cli连接客户端出现not connected
使用redis-cli -h 192.168.222.101 -p 6379即可解决

常用Redis键操作命令

1.SET命令–为指定键设置值

set key value [expiration EX seconds|PX milliseconds] [NX|XX]

2.MSET命令–给多个键设置值

mset key value [key value ...]

3.KEYS命令–查找符合给定模式pattern的键

keys pattern

4.GET命令–获取指定键的值

get key

5.MGET命令–获得多个键的值

mget key [key ...]

6.DUMP命令–序列化指定的键,并返回序列化的值

dump key

7.EXISTS命令–判断指定键是否存在

exists key [key ...]

8.TYPE命令–查看指定键的类型

type key

9.RENAME命令–修改指定键的名称

rename key newkey

10.EXPIRE命令–设置键的生存时间

expire key seconds

11.TTL命令–查看指定键的剩余设置时间

ttl key

12.PERSIST命令–移除指定键的生存时间

persist key

13.DEL命令–删除指定键

del key [key ...]

使用Java操作Redis

1、运行命令:firewall-cmd --get-active-zones
2、执行如下命令命令:firewall-cmd --zone=public --add-port=6379/tcp --permanent
3、重启防火墙,运行命令:firewall-cmd --reload
4、查看端口号是否开启,运行命令:firewall-cmd --query-port=6379/tcp
做完以上操作 就会把CentOS的防火墙打开6379的端口
在这里插入图片描述

配置 Redis 连接信息

确保您的 Redis 服务器配置允许远程连接:

  1. 编辑 Redis 配置文件 /etc/redis/redis.conf,将 bind 127.0.0.1 修改为 bind 0.0.0.0,或者添加您的服务器 IP
  2. 注释掉 protected-mode yes 或设置为 protected-mode no
    在这里插入图片描述
    接着启动Redis 启动教程
    java连接linux中的redis:

创建 Maven 项目结构

首先,创建一个标准的 Maven 项目结构:

my-redis-project/
├── pom.xml
└── src/
    └── main/
        └── java/
            └── com.redistest/
                    └── Test.java

配置 pom.xml 文件
创建一个包含 Jedis 依赖的 pom.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>redis-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- Redis Java Client -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.3.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 添加Maven Exec插件,用于直接运行主类 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <mainClass>com.example.Test</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

更新一下maven:
在这里插入图片描述
test测试连接文件:

package com.redistest;
import redis.clients.jedis.Jedis;

public class test {
    private static Jedis jedis=new Jedis("192.168.222.101",6379);
    public static void main(String[] args) {
        System.out.println("redis start..."+jedis.ping());
    }
}

结果出现:
在这里插入图片描述
至此,您已经成功连接到Redis服务器了!

当然,从设置-插件中也有redis的可视化插件:
在这里插入图片描述
第一个收费,有30天免费体验
第二个免费
在这里插入图片描述
在这里插入图片描述

操作字符串

创建TestString.java文件
(1)获取指定字符串键的旧值并设置新值

@Test
public void getsetTest(){
	String oldValue =jedis.getset("brand1","itcast");
	System.out.println(oldValue);
}

(2)获取字符串键指定索引范围的值内容。

@Test
public void getrangeTest(){
	String value =jedis.getrange("brand6",4,7);
	System.out.println(value);
}

操作列表

创建TestList.java文件,
(1)将一个或多个元素推入到列表中

    @Test
    public void rpushAndLpushrest() {
        //将5个元素推人列表 color的右端
        Long rpush = jedis.rpush("color", "green", "black", "purple", "white", "blue");
        // 将2个元素推人列表 color的左端
        Long lpush = jedis.lpush("color", "pink", "red");
        System.out.println(rpush + "-----" + lpush);
    }

(2)获取列表中元素的个数

    public void lrangeTest() {
        List<String> values = jedis.lrange("color", 0, 6);
        for (String value : values) {
            System.out.println(value);
        }
    }

(3)移除列表的指定元素。

    public void lremTest () {
        Long ll = jedis.lrem("color", 1, "red");
        System.out.println(ll);
    }

实现完整代码:

package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.List;
public class TestList {
    private static Jedis jedis = new Jedis("192.168.222.101", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
        // 调用测试方法
        TestList test = new TestList();
        test.rpushAndLpushrest();
        test.lrangeTest();
        test.lremTest();
    }
    public void rpushAndLpushrest() {
        //将5个元素推人列表 color的右端
        Long rpush = jedis.rpush("color", "green", "black", "purple", "white", "blue");
        // 将2个元素推人列表 color的左端
        Long lpush = jedis.lpush("color", "pink", "red");
        System.out.println(rpush + "-----" + lpush);
    }
    public void lrangeTest() {
        List<String> values = jedis.lrange("color", 0, 6);
        for (String value : values) {
            System.out.println(value);
        }
    }
    public void lremTest () {
        Long ll = jedis.lrem("color", 1, "red");
        System.out.println(ll);
    }

}

在这里插入图片描述

操作集合

创建TestSet.java文件
(1)将一个或多个元素添加到集合中

    public void saddTest() {
        Long result = jedis.sadd("databases", "mongodb", "redis", "hbase");
        System.out.println(result);
    }

(2)获取集合中的所有元素

    public void smembersTest () {
        Set<String> databases = jedis.smembers("databases");
        Iterator<String> database = databases.iterator();
        while (database.hasNext()) {
            String db = database.next();
            System.out.println(db);
        }
    }

(3)移除集合中一个或多个已经存在的元素。

public void sremTest() {
    Long result = jedis.srem("databases", "hbase");
    System.out.println(result);
}

实现完整代码:

package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.Set;
public class TestSet {
    private static Jedis jedis = new Jedis("192.168.222.101", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..."+jedis.ping());
        // 调用测试方法
        TestSet test = new TestSet();
        test.saddTest();
        test.smembersTest();
        test.sremTest();
    }
    public void saddTest() {
        Long result = jedis.sadd("databases", "mongodb", "redis", "hbase");
        System.out.println(result);
    }
    public void smembersTest () {
        Set<String> databases = jedis.smembers("databases");
        Iterator<String> database = databases.iterator();
        while (database.hasNext()) {
            String db = database.next();
            System.out.println(db);
        }
    }
    public void sremTest() {
        Long result = jedis.srem("databases", "hbase");
        System.out.println(result);
    }
}

操作散列

创建TestHash.java文件,
(1)为散列中多个键设置值

@Test
public void hmsetTest ()
	Map<String,String>map =new HashMap<>()
	map.put ("content","hello world");
	map.put ("author","Peter");
	String hash =jedis.hmset ("article",map)
	System.out.println(hash)
}

(2)获取散列中的所有键值对

@Test
public void hgetallTest(){
	Map<String,String>map =jedis.hgetAll("article");
	Set<Map.Entry<String,String>>set =map.entryset()
	Iterator<Map.Entry<String,String>>iterator =set.iterator();
	while (iterator.hasNext ())
		Map.Entry<String,String>keyval =iterator.next ()
		System.out.println(keyval);
	}
}

(3)删除散列中指定键及其相对应的值。

@Test
public void hdelTest(){
	Long result =jedis.hdel("article","author");
	System.out.println(result);
}

操作有序集合

创建TestSsets.java文件,
(1)为有序集合添加一个或多个键值对

    public void zaddTest() {
        Map<String, Double> map = new HashMap<>();
        map.put("wurui", 5.0);
        map.put("bob", 3.5);
        map.put("jack", 6.0);
        Long result = jedis.zadd("score", map);
        System.out.println(result);
    }

(2)统计有序集合中指定分值范围内的元素个数

    public void zcountTest() {
        Long num = jedis.zcount("score", 2, 4);
        System.out.println(num);
    }

(3)移除有序集合中的指定元素。

    public void zremTest() {
        Long result = jedis.zrem("score", "tom");
        System.out.println(result);
    }

实现完整代码:

package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;

public class TestSets {
    private static Jedis jedis = new Jedis("192.168.222.101", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
        // 调用测试方法
        TestSets test = new TestSets();
        test.zaddTest();
        test.zcountTest();
        test.zremTest();
    }
    public void zaddTest() {
        Map<String, Double> map = new HashMap<>();
        map.put("wurui", 5.0);
        map.put("bob", 3.5);
        map.put("jack", 6.0);
        Long result = jedis.zadd("score", map);
        System.out.println(result);
    }
    public void zcountTest() {
        Long num = jedis.zcount("score", 2, 4);
        System.out.println(num);
    }

    public void zremTest() {
        Long result = jedis.zrem("score", "tom");
        System.out.println(result);
    }
}

在这里插入图片描述


总结

至此,我们已经完成了对常用Redis键操作命令,使用Java操作Redis,配置 Redis 连接信息,操作字符串、列表、集合、散列、有序集合的学习啦!

http://www.dtcms.com/a/99128.html

相关文章:

  • 在 Windows 中查看 Nginx 当前占用的端口
  • 基于高德地图实现地图交互功能的探索与总结
  • 函数式组件中的渲染函数 JSX
  • Python基础教程:从格式化到项目管理
  • QT操作PDF文件
  • 计算机视觉准备八股中
  • 多任务眼底血管与眼底血管中心线提取
  • Oracle数据库数据编程SQL<3.1 PL/SQL 匿名块 及 流程控制中的条件判断、循环、异常处理和随机函数应用>
  • CSS 美化页面(一)
  • 【Ai插件开发】Notepad++ AI插件开发进阶:集成Ai模型问答功能与流式交互实现
  • 【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目
  • SpringCould微服务架构之Docker(5)
  • [笔记.AI]初始向量
  • python基础学习二(列表及字典的使用)
  • 分布式ID服务实现全面解析
  • 【UE5.3.2】初学1:适合初学者的入门路线图和建议
  • 基于医疗大数据的肿瘤疾病模式分析与研究
  • MySQL 的 SQL 语句执行顺序
  • C++实现布隆过滤器
  • Linux--进程地址空间
  • Java基础关键_032_反射(二)
  • 六十天前端强化训练之第三十四天之CI/CD 大师级深度解析
  • CNN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • NFS挂载异常排查记录
  • 比kubectl更好用的k8s命令行客户端kube-shell
  • 信号集操作函数
  • Object结构
  • sqli-labs靶场 less 8
  • Display Serializer、Camera Deserializer(Camera Des)和SerDes‌ 加解串应用
  • 【vllm/瞎折腾】在内网wsl上安装vllm并尝试多节点部署(失败了)