【Redis】在Java中以及Spring环境下操作Redis

Java环境下:

1.创建maven 项目

2.导入依赖

		<!-- redis -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>4.3.2</version>
		</dependency>

此处使用的是Jedis(提供的api和redis命令高度一致)

3.配置端口转发

防止Redis的端口被黑客攻击     将云服务器的redis端口映射到本地主机中

在xshell中配置:

 此时, 访问本地的 8888, 就相当于访问对应服务器的 6379

此时连接成功

一.基本命令:

    public static void test(Jedis jedis) {
        System.out.println("set 和 get 使用");
        //清空数据库
        jedis.flushAll();
        jedis.set("key","k1");
        jedis.set("key2","k2");
        jedis.set("key3","k3");
        String key = jedis.get("key");
        String key2 = jedis.get("key2");
        String key3 = jedis.get("key3");
        System.out.println("key: " + key);
        System.out.println("key2: " + key2);
        System.out.println("key3: " + key3);

        System.out.println("exists 和 del 使用");
        boolean result = jedis.exists("key");
        System.out.println("result:" + result);
        result = jedis.exists("key1111");
        System.out.println("result:" + result);

        long del = jedis.del("key", "key2");
        result = jedis.exists("key");
        System.out.println("result:" + result);

        System.out.println("keys 使用");
        jedis.set("key","k1");
        jedis.set("key2","k2");
        Set<String> keys = jedis.keys("*");
        System.out.println("keys: " + keys);

        System.out.println("expire 和 ttl 使用");

        jedis.set("key4","k4");
        jedis.expire("key4",10);
        //休眠5s
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        long ttl = jedis.ttl("key4");
        System.out.println("ttl: " + ttl );

        System.out.println("type 使用");
        jedis.flushAll();
        jedis.set("String", "1");
        String type = jedis.type("String");
        System.out.println("type: "+type);

        jedis.lpush("list","111","222","333");
        type = jedis.type("list");
        System.out.println("type: "+type);

        jedis.sadd("set","a","b","c");
        type = jedis.type("set");
        System.out.println("type: "+type);

        jedis.zadd("zset",1.0,"zhangsan");
        type = jedis.type("zset");
        System.out.println("type: "+type);

        jedis.hset("hash","f1 ","v1");
        type = jedis.type("hash");
        System.out.println("type: "+type);

    }

 String :

    public static void test(Jedis jedis) {
        //清空数据库
        jedis.flushAll();
        System.out.println("mset 和 mget 使用");
        jedis.mset("k1","111","k2","222","k3","333");
        List<String> mget = jedis.mget("k1", "k2", "k3","k4");
        System.out.println("mget: " +mget);

        System.out.println("getrange 和 setrange 使用");

        jedis.set("k4","abcdefgh");

        String k4 = jedis.getrange("k4", 0, 4);
        System.out.println("result: " +k4);

        jedis.setrange("k4",0,"eeee");
        System.out.println("k4: " +jedis.get("k4"));

        System.out.println("append 使用");
        jedis.append("k4","aaaaaa");
        System.out.println("k4: " + jedis.get("k4"));

        System.out.println("incr 和 decr 使用");

        jedis.set("k5","111");
        System.out.println( "k5: " + jedis.incr("k5"));
        System.out.println( "k5: " + jedis.decr("k5"));

    }

 

list使用:

    public static void  test(Jedis jedis) {
        jedis.flushAll();
        System.out.println("lpush 和 lrange 使用");
        jedis.lpush("key","1","2","3","4","5");
        System.out.println("key:" + jedis.lrange("key",0,-1));
        System.out.println("rpuhs ,rpop, lpop 使用 ");
        jedis.rpush("key2","1","2","3","4","5");
        System.out.println("key2 :" + jedis.lrange("key2",0,-1));
        System.out.println("lpop key2:" + jedis.lpop("key2"));
        System.out.println("rpop key2:" + jedis.rpop("key2"));
        System.out.println("llen 使用");
        System.out.println("len key2: " + jedis.llen("key2"));
    }

hash的使用:

    private static void test(Jedis jedis) {
        jedis.flushAll();
        System.out.println("hset 和 hget 使用");
        HashMap<String,String> hash = new HashMap<>();
        hash.put("f2","v2");
        hash.put("f3","v3");
        hash.put("f4","v4");
        jedis.hset("key",hash);
        jedis.hset("key","f1","v1");
        System.out.println("key f1: " +jedis.hget("key", "f1"));
        System.out.println("key f5: " +jedis.hget("key", "f5"));

        System.out.println("hexists 使用");
        Boolean result = jedis.hexists("key","f1");
        System.out.println("key f1 result: " + result);
        result = jedis.hexists("key","f5");
        System.out.println("key f5 result: " + result);

        System.out.println("hkeys 和 hvals 使用");

        Set<String> hkeys = jedis.hkeys("key");
        System.out.println("hkeys: " + hkeys);
        List<String> hvals = jedis.hvals("key");
        System.out.println("hvals: " +hvals);

        System.out.println("hdel 使用");
        jedis.hdel("key","f1");
        result = jedis.hexists("key","f1");
        System.out.println("key f1 result: " + result);

        System.out.println("hmset 和 hmget 使用");
        List<String> hmget = jedis.hmget("key", "f1", "f2", "f3");
        System.out.println("hmget key: " + hmget);
    }

set的使用:

    public static void test(Jedis jedis) {
        jedis.flushAll();

        System.out.println("sadd 和 smembers 使用");
        jedis.sadd("key","a","b","c","d");
        Set<String> smembers = jedis.smembers("key");
        System.out.println("key: " +smembers);

        System.out.println("sismember , scard , spop  使用");
        boolean result = jedis.sismember("key", "a");
        System.out.println("result: " + result);
        long len  = jedis.scard("key");
        System.out.println("key len: " +len);
        jedis.spop("key");
        System.out.println("key len: " +jedis.scard("key"));

        System.out.println("sinter 和 sinterstore");

        jedis.sadd("key2","1","2","3","4","5");
        jedis.sadd("key3","3","4","5","6","7");
        System.out.println("[key2 key3]sinter: "+ jedis.sinter("key2","key3"));

        long sinterstore = jedis.sinterstore("key4", "key2", "key3");
        System.out.println("sinterstore: " + sinterstore);
        System.out.println("key4: " + jedis.smembers("key4"));
    }

zset的使用:

    public static void test(Jedis jedis) {
        jedis.flushAll();
        System.out.println("zadd 和 zrange 使用");
        jedis.zadd("key",10.0,"zhangsan");
        Map<String ,Double> hash = new HashMap<>();
        hash.put("lisi",20.0);
        hash.put("wangwu",30.0);
        jedis.zadd("key",hash);
        List<String> members = jedis.zrange("key", 0, -1);
        System.out.println("members: "+members);
        List<Tuple> key = jedis.zrangeWithScores("key", 0, -1);
        System.out.println("key: " + key);

        System.out.println("zcard , zscore 使用");
        long len = jedis.zcard("key");
        System.out.println("len key: " +len);
        Double score  =  jedis.zscore("key","zhangsan");
        System.out.println("score: " + score);

        System.out.println("zrem , zrank 使用");
        Long zrank = jedis.zrank("key", "lisi");
        System.out.println("lisi rank: " + zrank);
        jedis.zrem("key","zhangsan");
        System.out.println("lisi rank: " + jedis.zrank("key", "lisi"));

    }

 

都是一些基本操作,跟在redis操作基本一致,

Spring环境:

创建项目时勾选即可

通过注入的方法拿到StringRedisTemplate操作Redis 相当于刚才的Jedis

 

 将操作Redis的方法分成几个类别,好进一步更好的组织

大体命令基本一致 

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

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

相关文章

功能说明并准备静态结构

功能说明并准备静态结构 <template><div class"card-container"><!-- 搜索区域 --><div class"search-container"><span class"search-label">车牌号码&#xff1a;</span><el-input clearable placeho…

【华三】STP的角色选举(一文讲透)

【华三】STP的角色选举 一、引言二、STP基础概念扫盲三、根桥选举过程详解四、根端口选举过程详解五、指定端口选举过程详解六、阻塞端口七、总结与配置建议七、附录**1. BPDU字段结构图&#xff08;文字描述&#xff09;****2. 华三STP常用命令速查表** 文章总结 一、引言 在…

LangChain 技术入门指南:探索语言模型的无限可能

在当今的技术领域&#xff0c;LangChain 正逐渐崭露头角&#xff0c;成为开发语言模型应用的强大工具。如果你渴望深入了解并掌握这一技术&#xff0c;那么就跟随本文一起开启 LangChain 的入门之旅吧&#xff01; (后续将持续输出关于LangChain的技术文章,有兴趣的同学可以关注…

【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)

文章目录 第四章 创建型模式4.5 原型模式4.5.1 原型模式介绍4.5.2 原型模式原理4.5.3 深克隆与浅克隆4.5.4 原型模式应用实例4.5.5 原型模式总结 个人主页&#xff1a;道友老李 欢迎加入社区&#xff1a;道友老李的学习社区 第四章 创建型模式 4.5 原型模式 4.5.1 原型模式介…

【uniapp*vue3】app/h5 webview通讯方案

本文旨在解决vue3版本下uniapp h5项目向app项目中webview通讯问题 问题产生于uniapp不支持vue3使用template.h5.html 自定义打包模板 h5向app发送信息 有很多文章指出h5项目使用uni.postmessage 这个api需要在template.h5.html引入一个js文件 然后改下webuni变量再从manifest.…

关于Bootstrap的前端面试题及其通俗易懂的答案解析

文章目录 1. 什么是Bootstrap&#xff1f;2. Bootstrap的主要特点有哪些&#xff1f;3. Bootstrap中的栅格系统是如何工作的&#xff1f;4. 如何在Bootstrap中创建一个按钮&#xff1f;5. 如何使一个元素在Bootstrap中可见或隐藏&#xff1f;6. Bootstrap中的导航栏是如何工作的…

POI优化Excel录入

57000单词原始录入时间258S 核心代码: List<Word> wordBookList ExcelUtil.getReader(file.getInputStream()).readAll(Word.class);if (!CollectionUtil.isEmpty(wordBookList)) {for (Word word : wordBookList) {//逐条向数据库中插入单词wordMapper.insert(word);}…

重订货点和安全库存

重订货点 重订货点是指当库存水平下降到某个特定值时&#xff0c;系统会自动触发采购或生产订单。其目的是确保在物料消耗完之前&#xff0c;能够及时补充库存。 安全库存 安全库存是为应对未来物资供应或需求的不确定性因素&#xff08;如突发性订货、交货期突然延期等&…

axios post请求 接收sse[eventsource]数据的

axios 接收sse数据的 axios 接收sse数据的 EventSource什么 基于 HTTP 协议实现&#xff0c;通过与服务器建立一个持续连接&#xff0c;实现了服务器向客户端推送事件数据的功能。在客户端&#xff0c;EventSource 对象通过一个 URL 发起与服务器的连接。连接成功后&#xff0…

上帝之眼——nmap

nmap介绍 Nmap&#xff08;网络映射器&#xff09;是一款广受欢迎的网络探测和安全评估工具&#xff0c;被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景&#xff0c;成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍&#xff0c;包括其优点、基本…

Selenium实战案例1:论文pdf自动下载

在上一篇文章中&#xff0c;我们介绍了Selenium的基础用法和一些常见技巧。今天&#xff0c;我们将通过中国科学&#xff1a;信息科学网站内当前目录论文下载这一实战案例来进一步展示Selenium的web自动化流程。 目录 中国科学&#xff1a;信息科学当期目录论文下载 1.网页内…

Qt常用控件之标签QLabel

标签QLabel QLabel 标签用来显示文本和图片&#xff0c;在 Qt 中使用频率很高。 1. Label属性 属性说明textQLabel 中的文本。textFormat文本的格式。其中 Qt::PlainText 为纯文本&#xff1b;Qt::RichText 为富文本&#xff08;支持 html 格式&#xff09;&#xff1b; Qt:…

vue项目启动时报错:error:0308010C:digital envelope routines::unsupported

此错误与 Node.js 的加密模块有关&#xff0c;特别是在使用 OpenSSL 3.0 及以上版本时。Vue 项目在启动时可能会依赖一些旧的加密算法&#xff0c;而这些算法在 OpenSSL 3.0 中默认被禁用&#xff0c;导致 error:0308010C:digital envelope routines::unsupported 错误。 解决…

计算机组成原理——输入/输出系统(十七)

人生最暗的夜&#xff0c;恰是抬头可见星辰的时刻。那些让你喘不过气的压力&#xff0c;是蜕变的茧房&#xff1b;那些被汗水浸透的清晨&#xff0c;终将化作破晓的光。不必羡慕他人的花开&#xff0c;你的根系正穿透岩层汲取力量&#xff0c;正如深海中的微光总在无人处酝酿璀…

Plant Simulation培训教程-双深堆垛机立库仿真模块

原创 知行 天理智能科技 2025年01月03日 17:02 浙江 又到年终盘点的时候了&#xff0c;在这里我把之前录制的Plant Simulation培训教程-双深堆垛机立库仿真模块分享出来&#xff0c;有需要的可以直接联系我。 双深堆垛机立库仿真模块基于单深模块开发&#xff0c;适用于双深堆…

Scala基础学习

主要用来处理数据&#xff0c;不处理web&#xff0c;没有类似spring的框架 1. Scala简介 我们基于的scala版本 2.12.10 scala是运行在 JVM 上的多范式&#xff08;规范&#xff09;编程语言&#xff0c;同时支持面向对象和面向函数编程。&#xff08;真实数据与操作过程解耦…

Java函数式编程-Lambda表达式 (形参)->{方法体}

函数式编程 此“函数”类似于数学中的函数(强调做什么)&#xff0c;只要输入的数据一致返回的结果也是一致的 函数式编程解决了什么问题&#xff1f; 使用Lambda函数替代某些匿名内部类对象&#xff0c;从而让程序代码更简洁&#xff0c;可读性更好。 Lambda表达式 (形参…

8.python文件

文章目录 1.**文件**1.1**文件是什么**1.2**文件路径**1.3**文件操作**1.3.1**打开文件**1.3.2**关闭文件**1.3.3**写文件**1.3.4**读文件** 1.4**关于中文的处理**1.5**使用上下文管理器** 大家好&#xff0c;我是晓星航。今天为大家带来的是 python文件 相关的讲解&#xff0…

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…

51c大模型~合集69

我自己的原文哦~ https://blog.51cto.com/whaosoft/12221979 #7项基于SAM万物分割模型研究工作 1、CC-SAM: SAM with Cross-feature Attention and Context for Ultrasound Image Segmentation #ECCV2024 #SAM #图像分割 #医学图像 Segment Anything Model (SAM) 在自…