【Redis】Java连接Redis及Java操作Redis常用数据类型

一,Java连接Redis

1.1 连接前端服务器

打开RedisDesktopManager并连接Redis

不知道可看我上一篇文章:

【Redis】安装(Linux&window)及Redis的常用命令-CSDN博客

1.2 后端依赖

导入相关的jedis依赖

注意:要在dependencies标签中导入

pom.xml:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

1.3 Java连接

创建一个类,里面写连接Redis的相关代码

public class Redis {
    public static void main(String[] args) {
        //建立与数据库连接
    Jedis jedis=  new Jedis("localhost",6379);

         //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
    }
}

如果运行显示PONG即可表明连接成功 

二,Java操作Redis常用类型数据

2.1 Redis字符串(String)

package com.zking.ssm.common;

import redis.clients.jedis.Jedis;

/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);

        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());

        //String的相关操作
        //连接第七个数据库
        jedis.select(3);


         //        存值
        jedis.set("uname","帅哥");
         //        取值
        System.out.println(jedis.get("uname"));
         //        设置该hobby多久后自动删除
        jedis.setex("hobby",25,"game");
        //        查看剩余时间
        System.out.println(jedis.ttl("hobby"));
        //        修改值
        jedis.set("uname","美男子");
        System.out.println(jedis.get("uname"));
        //        删除值
       //  System.out.println(jedis.del("uname"));


    }
}

2.2 Redis哈希(Hash)

package com.zking.ssm.common;

import redis.clients.jedis.Jedis;

/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);

        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());

        //String的相关操作
        //连接第七个数据库
        jedis.select(3);



//      存值
//      jedis.hset("man","sname","帅哥");
//      jedis.hset("man","sage","18");
//      jedis.hset("man","sex","男");
//      取指定的字段值
//      System.out.println(jedis.hget("man", "sname"));
//      删除值
//      System.out.println(jedis.hdel("man","sage"));
//      查询指定的key的所有字段
//      System.out.println(jedis.hgetAll("man"));
//      查询指定的key是否存在
//      System.out.println(jedis.hexists("man", "sname"));
//      System.out.println(jedis.hexists("man", "sage"));
//      获取指定key的长度
//        System.out.println(jedis.hlen("man"));

    }
}

2.3 Redis列表(List)

package com.zking.ssm.common;

import redis.clients.jedis.Jedis;

/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);

        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());

        //String的相关操作
        //连接第七个数据库
        jedis.select(3);






//        lpush key value1 value2 value3          将一个或多个值插入到列表头部
        jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球");
//        llen key                                获取列表的长度
        System.out.println(jedis.llen("List_hobby"));
//        lindex key index                        根据索引获取列表中的元素
        System.out.println(jedis.lindex("List_hobby", 0));
//        lrange key start sop                    查看指定范围内的元素
        System.out.println(jedis.lrange("List_hobby", 0, 2));

    }
}

2.4 Redis集合(Set)

package com.zking.ssm.common;

import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);

        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());

        //String的相关操作
        //连接第七个数据库
        jedis.select(3);



//        Redis集合(Set)
        //       sadd key value1 [value2]                向集合添加一个或多个元素
        jedis.sadd("set_user", "哈巴狗", "花猪", "牛马", "joker");
//        scard key                               获取集合中的元素数量
        System.out.println(jedis.scard("set_user"));
//        exists key                              是否存在
        System.out.println(jedis.exists("set_user"));

    }
}

2.5 Redis有序集合(Sorted Set)

package com.zking.ssm.common;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);

        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());

        //String的相关操作
        //连接第七个数据库
        jedis.select(3);


//        5、Redis有序集合(Sorted Set)
// -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
        jedis.zadd("mysort", 1.0, "三国演义");
        jedis.zadd("mysort", 2.0, "西游记");
        jedis.zadd("mysort", 3.0, "水浒传");
        jedis.zadd("mysort", 4.0, "红楼梦");
        Map<String, Double> map = new HashMap<>();
        map.put("mutouliu", 5.0);
        jedis.zadd("mysort", map);
        //正序排列
        Set<String> mysort = jedis.zrange("mysort", 0, -1);
        System.out.println(mysort);
        //倒序排列
        Set<String> mysort1 = jedis.zrange("mysort", -1, 0);
        System.out.println(mysort1);

//        命令用于计算集合中元素的数量
        System.out.println(jedis.zcard("mysort"));
//        命令用于计算有序集合中指定分数区间的成员数量
        System.out.println(jedis.zcount("mysort", 0, 4));
//        命令在计算有序集合中指定字典区间内成员数量。
        System.out.println(jedis.zlexcount("mysort", "-", "+"));

    }
}

三,Redis在项目应用

  1. 缓存:Redis作为一种内存数据库,常用于缓存常用数据,如数据库查询结果、API响应等。通过将数据存储在Redis中,可以快速获取数据,提高系统的性能和响应速度。

  2. 会话管理:Redis可用于存储会话数据,特别是在分布式系统中,可以将用户的会话数据存储在Redis中,以实现多个服务节点之间的会话共享。

  3. 发布/订阅系统:Redis具有发布/订阅功能,可以用于构建实时消息系统。通过发布/订阅功能,可以将消息发送到频道,并由订阅者实时接收并处理消息。

  4. 排行榜/计数器:Redis提供了有序集合、计数器等功能,可以用于实现排行榜、计数器等应用场景。比如实时热门文章排行榜、用户关注数计数器等应用。

  5. 分布式锁:Redis提供了原子操作的能力,可以用于实现分布式锁。在分布式系统中,可以使用Redis的原子操作实现互斥锁,保证在同一时间只有一个进程能够访问共享资源,确保数据的一致性和并发安全性。

  6. 消息队列:Redis的列表结构非常适合用作消息队列。可以将待处理的任务作为消息发布到Redis的列表中,然后通过消费者逐一处理这些任务。

  7. 地理位置的存储与查询:Redis提供了地理位置相关的API,可以将地理信息与特定对象关联起来,并进行查询

    总的来说,Redis在项目中的主要应用包括缓存、会话管理、发布/订阅系统、排行榜/计数器、分布式锁、消息队列以及地理位置的存储与查询等方面。这些应用可以提高系统性能、实现实时消息传递和数据共享等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/114865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】pytorch——实现CIFAR-10数据集的分类

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 往期文章&#xff1a; 【深度学习】pytorch——快速入门 CIFAR-10分类 CIFAR-10简介CIFAR-10数据集分类实现步骤一、数据加载及预处理实现数据加载及预处理归一化的理解访问数据集Dataset对象Dataloader对象 二、…

【css3】涟漪动画

效果展示 dom代码 <div class"mapSelfTitle66"><div></div> </div> 样式代码 .mapSelfTitle66{width:120px;height:60px;position: relative;&>div{width:100%;height:100%;background: url("~/assets/images/video_show/err…

数据结构:邻接矩阵与邻接表

模型图 邻接矩阵 用于反应图中任意两点之间的关联&#xff0c;用二维数组表示比较方便 以行坐标为起点&#xff0c;列坐标为终点如果两个点之间有边&#xff0c;那么标记为绿色&#xff0c;如图&#xff1a; 适合表示稠密矩阵 邻接表 用一维数组 链表的形式表示&#xff…

离散数学实践(2)-编程实现关系性质的判断

*本文为博主本人校内的离散数学专业课的实践作业。由于实验步骤已经比较详细&#xff0c;故不再对该实验额外提供详解&#xff0c;本文仅提供填写的实验报告内容与代码部分&#xff0c;以供有需要的同学学习、参考。 -------------------------------------- 编程语言&#xff…

高效处理异常值的算法:One-class SVM模型的自动化方案

一、引言 数据清洗和异常值处理在数据分析和机器学习任务中扮演着关键的角色。清洗数据可以提高数据质量&#xff0c;消除噪声和错误&#xff0c;从而确保后续分析和建模的准确性和可靠性。而异常值则可能对数据分析结果产生严重影响&#xff0c;导致误导性的结论和决策。因此&…

人工智能与卫星:颠覆性技术融合开启太空新时代

人工智能与卫星&#xff1a;颠覆性技术融合开启太空新时代 摘要&#xff1a;本文将探讨人工智能与卫星技术的融合&#xff0c;并介绍其应用、发展和挑战。通过深入了解这一领域的前沿动态&#xff0c;我们将展望一个由智能卫星驱动的未来太空时代。 一、引言 近年来&#xf…

uniapp小程序砸金蛋抽奖

砸之前是金蛋png图片&#xff0c;点击砸完之后切换砸金蛋动效gif图片&#xff1b; 当前代码封装为砸金蛋的组件&#xff1b; vue代码&#xff1a; <template><view class"page" v-if"merchantInfo.cdn_static"><image class"bg&qu…

第6章_多表查询

文章目录 多表查询概述1 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积理解演示代码 2 多表查询分类讲解2.1 等值连接 & 非等值连接2.1.1 等值连接2.1.2 非等值连接 自连接 & 非自连接内连接与外连接演示代码 3 SQL99语法实现多表查询3.1 基本语法3.2 内连接&#x…

HTML脚本、字符实体、URL

HTML脚本&#xff1a; JavaScript 使 HTML 页面具有更强的动态和交互性。 <script> 标签用于定义客户端脚本&#xff0c;比如 JavaScript。<script> 元素既可包含脚本语句&#xff0c;也可通过 src 属性指向外部脚本文件。 JavaScript 最常用于图片操作、表单验…

【机器学习】几种常用的机器学习调参方法

在机器学习中&#xff0c;模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中&#xff0c;模型的超参数调整是模型优化中最重要的环节之一。超参数&#xff08;Hyperparameters&#xff09;在机器学习算法中需要人为设定&#xff0c;它们不能直接从训练数据…

Locust:可能是一款最被低估的压测工具

01、Locust介绍 开源性能测试工具https://www.locust.io/&#xff0c;基于Python的性能压测工具&#xff0c;使用Python代码来定义用户行为&#xff0c;模拟百万计的并发用户访问。每个测试用户的行为由您定义&#xff0c;并且通过Web UI实时监控聚集过程。 压力发生器作为性…

Nacos报错Connection refused (Connection refused)(最后原因醉了,非常醉)

目录 一、问题产生二、排查思路1.nacos拒绝连接&#xff0c;排查思路&#xff1a;2.Nacos启动成功但是拒绝连接的几种原因&#xff1a; 三、实操过程&#xff08;着急解决问题直接看这个&#xff09;1.启动Nacos2.查看Nacos启动日志3.根据日志处理问题4.修改Nacos5.重启Nacos 一…

CSS基础知识点速览

1 基础认识 1.1 css的介绍 CSS:层叠样式表(Cascading style sheets) CSS作用&#xff1a; 给页面中的html标签设置样式 css写在style标签里&#xff0c;style标签一般在head标签里&#xff0c;位于head标签下。 <style>p{color: red;background-color: green;font-size…

Git客户端软件 Tower mac中文版特点说明

Tower mac是一款Mac OS X系统上的Git客户端软件&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助用户更加方便地管理和使用Git版本控制系统。 Tower mac软件特点 1. 界面友好&#xff1a;Tower的界面友好&#xff0c;使用户能够轻松地掌握软件的使用方法。 2. 多种Git操…

探索主题建模:使用LDA分析文本主题

在数据分析和文本挖掘领域&#xff0c;主题建模是一种强大的工具&#xff0c;用于自动发现文本数据中的隐藏主题。Latent Dirichlet Allocation&#xff08;LDA&#xff09;是主题建模的一种常用技术。本文将介绍如何使用Python和Gensim库执行LDA主题建模&#xff0c;并探讨主题…

STM32F407的系统定时器

文章目录 系统定时器SysTick滴答定时器寄存器STK_CTRL 控制寄存器STK_LOAD 重载寄存器STK_VAL 当前值寄存器STK_CALRB 校准值寄存器 非系统初始化 Systick 定时器SysTick_InitSysTick_CLKSourceConfig delay_us寄存器delay_us库函数delay_xms短时delay_ms长时SysTick_Config 系…

Firefox修改缓存目录的方法

打开Firefox&#xff0c;在地址栏输入“about:config” 查找是否有 browser.cache.disk.parent_directory&#xff0c;如果没有就新建一个同名的字符串&#xff0c;然后修改值为你要存放Firefox浏览器缓存的目录地址&#xff08;E:\FirefoxCacheFiles&#xff09; 然后重新…

在python中加载tensorflow-probability模块和numpy模块

目录 操作步骤&#xff1a; 注意&#xff1a; 问题&#xff1a; 解决办法&#xff1a; 操作步骤&#xff1a; 在虚拟环境的文件夹中&#xff0c;找到Scripts文件夹&#xff0c;点击进去&#xff0c;找到地址栏&#xff0c;在地址栏中输入cmd&#xff0c;进入如下界面。 输…

详解Java经典数据结构——HashMap

Java 的 HashMap 是一个常用的基于哈希表的数据结构&#xff0c;它实现了 Map 接口&#xff0c;可以存储键值对。下面我们进行详细介绍&#xff1a; 基本结构&#xff1a;HashMap 底层是基于哈希表来实现的&#xff0c;每次插入一个键值对时&#xff0c;会先对该键进行 Hash 运…

思维训练3

题目描述1 Problem - A - Codeforces 题目分析 样例1解释&#xff1a; 对于此题&#xff0c;我们采用贪心的想法&#xff0c;从1到n块数越少越好&#xff0c;故刚好符合最少的块数即可&#xff0c;由于第1块与第n块是我们必须要走的路&#xff0c;所以我们可以根据这两块砖的…