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

embedded/2025/1/24 7:35:58/

Java环境下:

1.创建maven 项目

2.导入依赖

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

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

3.配置端口转发

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

在xshell中配置:

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

此时连接成功

一.基本命令:

java">    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);//休眠5stry {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 :

java">    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使用:

java">    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的使用:

java">    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的使用:

java">    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的使用:

java">    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的方法分成几个类别,好进一步更好的组织

大体命令基本一致 


http://www.ppmy.cn/embedded/156511.html

相关文章

如何从外部结束QtConcurrent::run

短答&#xff1a;QtConcurrent 本身并不支持从外部强行终止 QtConcurrent::run 启动的任务。想要“取消”或“中断”并发任务&#xff0c;需要在任务内部定期检查某种“取消标志”&#xff08;例如 QAtomicBool、std::atomic<bool>&#xff09;或者使用 QFuture::isCance…

Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)

准备工作 Kubernetes v1.28.0搭建教程请参考&#xff1a;Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml &#xff0c;下载好之后&#xff0c;进入文件编辑 下载地址…

ClickHouse SQL 查询中别名导致报错的问题分析与解决方案

一、引言 在使用ClickHouse数据库进行数据查询时&#xff0c;SQL语句中的别名使用是常见的优化手段之一。但是&#xff0c;不当的别名使用可能会引发解析错误&#xff0c;影响查询结果的正确性。下面将通过实例详细探讨因别名使用而导致报错的原因&#xff0c;并提供相应的解决…

AI代码生成器赋能房地产:ScriptEcho如何革新VR/AR房产浏览体验

房地产行业正经历着深刻的变革。传统的房产浏览方式&#xff0c;例如平面图和实地看房&#xff0c;效率低下&#xff0c;用户体验差&#xff0c;难以满足现代消费者对信息获取和体验感日益增长的需求。虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;…

问题大集-03——图标引入有几种方式,好处是什么,什么情况下使用?(仅针对阿里巴巴矢量图标库)

1、使用font-face和字符编码 &#xff08;1&#xff09;将iconfont.css文件中的font-face和.iconfont引入需要使用的文件中 &#xff08;2&#xff09;查看并修改font-face中url&#xff0c;确保资源可以被正确加载&#xff08;1.html和fonts在同级目录下&#xff09; &#x…

C# 数据结构全面解析

在 C# 编程的世界里&#xff0c;数据结构是构建高效程序的基石。合理运用数据结构&#xff0c;能够优化数据的存储和访问方式&#xff0c;显著提升程序的性能。本文将深入探讨 C# 中常见的数据结构及其应用场景。 一、数据结构基础概念 数据结构是一种组织和存储数据的方式&a…

开源项目芋道源码解析 [开篇]

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/source-code-about-ruoyi-vue-pro.html 目录 1.引言2.项目总体结构3.模块的结构&#xff0c;功能和依赖关系3.1 root3.2 yudao-dependencies3.3 yudao-framework3.4 yudao-module-xxxxx3.5 yudao-server3.6 关系…

智能运维分析决策系统:赋能数字化转型的智慧引擎

智能运维分析决策系统:赋能数字化转型的智慧引擎 在数字化转型的浪潮中,企业运维部门面临着前所未有的挑战与机遇。随着业务规模的迅速扩张,系统复杂度日益增加,传统的人工运维模式已难以满足高效、精准、实时的运维需求。智能运维分析决策系统(AIOps,Artificial Intel…