【redis】jedis概述_简单使用(Java中使用redis)

1、定义与背景

  • Jedis是Redis官方推崇的Java客户端实现之一,允许Java程序通过其提供的Java API与Redis服务器进行交互。
  • Redis是一款高性能的NOSQL系列的非关系型数据库,使用C语言开发,支持多种键值数据类型,包括字符串、哈希、列表、集合和有序集合等。

2、主要特点

  • 简单易用:Jedis提供了直观的API,使得与Redis的交互变得简单而直观。
  • 高性能:Jedis被设计为高性能的Redis客户端,通过连接池等技术提高通信效率,并支持异步操作。
  • 支持多种数据结构:Jedis完全支持Redis所提供的各种数据结构,满足各种业务需求。
  • 集群支持:Jedis提供了对Redis集群的支持,实现数据的高可用和扩展性。
  • 发布订阅:支持Redis的发布订阅功能,可用于实现消息队列、事件通知等场景。

3、使用步骤

步骤1.创建一个maven工程

<?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>org.example</groupId>
    <artifactId>redis_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.7</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>
</project>

步骤2.配置logback用到的xml文件 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration
        xmlns="http://ch.qos.logback/xml/ns/logback"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback logback.xsd">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} %c [%t] - %m%n</pattern>
        </encoder>
    </appender>
    <logger name="c" level="debug" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>
<root level="ERROR">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

步骤3:修改redis.conf的配置文件 ,加入当前虚拟机的ip地址

bind 192.168.44.4 127.0.0.1 -::1

步骤4:修改redis.conf的配置文件,将文件保护模式修改,原有默认值是yes,改成no protected-mode no

步骤5:查看一下linux防火墙状态

systemctl status firewalld 默认是打开的 绿色active(running)

步骤6:关闭防火墙

systemctl stop firewalld

关闭之后再去查看防火墙状态

inactive (dead)

步骤7:测试连接

@Slf4j(topic = "c.TestConnection")
public class TestConnection {
    public static void main(String[] args) {
        Jedis jedis=new Jedis("192.168.44.4",6379);
        String p = jedis.ping();
        log.debug(p);
   }
}

4、操作不同数据类型

4.1字符串(String)

  1. 设置和获取
    • 使用jedis.set(key, value)设置字符串值。
    • 使用jedis.get(key)获取字符串值。
  2. 追加字符串
    • 使用jedis.append(key, value)在已存在的字符串后追加字符串。
  3. 自增/自减
    • 使用jedis.incr(key)jedis.decr(key)对字符串值进行整数自增/自减。

示例代码:

Jedis jedis = new Jedis("localhost", 6379);  
jedis.set("username", "john_doe");  
String username = jedis.get("username");  
System.out.println("Username: " + username);  
jedis.append("username", "_updated");  
System.out.println("Updated Username: " + jedis.get("username"));  
jedis.incr("counter"); // 假设counter是一个整数  
System.out.println("Counter: " + jedis.get("counter"));  
jedis.close();

4.2哈希表(Hash)

  1. 设置字段和值
    • 使用jedis.hset(key, field, value)设置哈希表中字段的值。
  2. 获取字段值
    • 使用jedis.hget(key, field)获取哈希表中字段的值。
  3. 获取所有字段和值
    • 使用jedis.hgetAll(key)获取哈希表中所有字段和值。

示例代码:

Jedis jedis = new Jedis("localhost", 6379);  
jedis.hset("user:1", "name", "John");  
jedis.hset("user:1", "age", "30");  
String name = jedis.hget("user:1", "name");  
System.out.println("Name: " + name);  
Map<String, String> userMap = jedis.hgetAll("user:1");  
for (Map.Entry<String, String> entry : userMap.entrySet()) {  
    System.out.println(entry.getKey() + ": " + entry.getValue());  
}  
jedis.close();

4.3列表(List)

  1. 在列表两端插入元素
    • 使用jedis.lpush(key, values...)在列表左侧插入元素。
    • 使用jedis.rpush(key, values...)在列表右侧插入元素。
  2. 获取列表元素
    • 使用jedis.lrange(key, start, end)获取列表中的元素范围。
  3. 从列表两端移除元素
    • 使用jedis.lpop(key)从列表左侧移除并返回元素。
    • 使用jedis.rpop(key)从列表右侧移除并返回元素。

示例代码:

Jedis jedis = new Jedis("localhost", 6379);  
jedis.lpush("mylist", "a", "b", "c");  
List<String> list = jedis.lrange("mylist", 0, -1);  
System.out.println("List: " + list);  
String leftElement = jedis.lpop("mylist");  
System.out.println("Left Element: " + leftElement);  
jedis.close();

4.4集合(Set)和有序集合(Sorted Set)

集合和有序集合的操作与列表类似,但集合不允许重复元素,有序集合的元素按分数排序。使用jedis.sadd(key, members...)向集合添加元素,使用jedis.zadd(key, score, member)向有序集合添加元素等。

示例代码(仅有序集合):

Jedis jedis = new Jedis("localhost", 6379);  
jedis.zadd("sortedset", 1, "a");  
jedis.zadd("sortedset", 2, "b");  
Set<Tuple> tuples = jedis.zrevrangeWithScores("sortedset", 0, -1);  
for (Tuple tuple : tuples) {  
    System.out.println("Member: " + tuple.getElement() + ", Score: " + tuple.getScore
上一篇:Java 方法中循环调用具有事务的方法


下一篇:【CT】LeetCode手撕—31. 下一个排列-2- 实现