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

news/2024/7/8 3:12:50 标签: redis, java

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:测试连接

java">@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)对字符串值进行整数自增/自减。

示例代码:

java">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)获取哈希表中所有字段和值。

示例代码:

java">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)从列表右侧移除并返回元素。

示例代码:

java">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)向有序集合添加元素等。

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

java">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

http://www.niftyadmin.cn/n/5536185.html

相关文章

如何使用 3D 建模库在 C# 中将 3DS 转换为 USDZ?

USDZ/USD是一种 3D 文件格式&#xff0c;被广泛用于跨平台共享 3D 资产。另一方面&#xff0c;3DS是另一种以块形式存储数据的 3D 文件格式。在某些情况下&#xff0c;您需要将3DS 文件转换为 USDZ/USD文件格式。因此&#xff0c;本篇博文介绍了一个功能丰富的3D 建模库&#x…

什么是独立服务器?

独立服务器是指一个单独的物理服务器&#xff0c;整体的硬件设施都是独立存在的&#xff0c;有着强大的性能&#xff0c;只需要运行用户个人的数据信息&#xff0c;并且可以享受到独立服务器的硬件与软件&#xff0c;当网站有着大量的用户进行访问或者是需要运行大型的软件时&a…

Apache Hadoop完全分布式集群搭建指南

Hadoop发行版本较多,Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)收费版本通常用于生产环境,这里用开源免费的Apache Hadoop原始版本。 下载:Apache Hadoop 版本下载:Index of /hadoop/common Hadoop基础知识可查看本专栏其它篇章:Apac…

速盾:ddos高防ip是什么?

DDoS攻击是一种通过向目标网络发送大量的无效请求&#xff0c;以致其无法正常运作的攻击方式。这种攻击方式广泛应用于各种网络服务&#xff0c;如网站、服务器、游戏等。由于DDoS攻击可以导致被攻击的网络瘫痪&#xff0c;因此许多组织和个人都开始关注网络安全&#xff0c;并…

科技赋能智慧应急:“数字孪生+无人机”在防汛救灾中的应用

近期&#xff0c;全国多地暴雨持续&#xff0c;“麻辣王子工厂停工”“水上派出所成水上的派出所了”等相关词条冲上热搜&#xff0c;让人们看到了全国各地城市内涝、洪涝带来的严重灾情。暴雨带来的影响可见一斑&#xff0c;潜在的洪水、泥石流、山体滑坡等地质灾害更应提高警…

大数据面试题之数据库(2)

数据库中存储引擎MvlSAM与InnoDB的区别 Mylsam适用于什么场景? InnoDB和Mvlsam针对读写场景? MySQL Innodb实现了哪个隔离级别? InnoDB数据引擎的特点 InnoDB用什么索引 Hash索引缺点 数据库索引的类型&#xff0c;各有什么优缺点? MySQL的索引有哪些?索引…

2024 年第十四届 APMCM 亚太地区大学生数学建模 B题 洪水灾害的数据分析与预测--完整思路代码分享(仅供学习)

洪水是暴雨、急剧融冰化雪、风暴潮等自然因素引起的江河湖泊水量迅速增加&#xff0c;或者水位迅猛上涨的一种自然现象&#xff0c;是自然灾害。洪水又称大水&#xff0c;是河流、海洋、湖泊等水体上涨超过一定水位&#xff0c;威胁有关地区的安全&#xff0c;甚至造成灾害的水…

阿里云 ECS 服务器的安全组设置

阿里云 ECS 服务器的安全组设置 缘由安全组多个安全组各司其职一些常见的IP段百度 IP 段华为云 IP 段搜狗蜘蛛 IP 段阿里云 IP 段 。。。 缘由 最近公司规模缩减&#xff0c;原有的托管在 IDC 机房的服务器&#xff0c;都被处理掉了&#xff0c;所有代码都迁移到了阿里云的云服…