欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Redis的Java客户端

Redis的Java客户端

2025/4/2 8:38:42 来源:https://blog.csdn.net/wk200411/article/details/146720837  浏览:    关键词:Redis的Java客户端

Redis的Java客户端

  • 一.Jedis依赖
    • 1.引入依赖
    • 2.redis端口问题
      • (1)打包给Linux
      • (2)配置SSH端口,进行映射
  • 二.Java客户端上使用redis
    • 1.连接Jedis服务器
    • 2.redis通用命令
      • set/get命令
      • exists和del
      • keys
      • ex、ttl、type
    • 3.String类型的命令
      • mset和mget
      • getrange和setrange
      • incr、decr 和 append
    • 4.List命令
      • lpush和lrange
      • rpush
      • lpop
      • rpop
      • llen
      • brpop
    • 5.Set命令
      • smembers 和 sadd
      • sismember
      • scard
      • spop
      • sinter
      • sinterstore
    • 6.Hash命令
      • hget 和 hset
      • hexists
      • hdel
      • hkeys 和 hvals
      • hmget 和 hmset
    • 7.ZSet命令
      • zadd 、zrange和zrangewithscores
      • zcard
      • zrem
      • zscore
      • zrank
  • 三.Spring客户端使用redis
    • 1.redis的依赖
    • 2.yml的配置文件
    • 3. String类型命令
    • 4.List类型
    • 5.Set类型
    • 6.Hash类型
    • 7.ZSet类型

一.Jedis依赖

1.引入依赖

在Maven中引入Jedis的依赖,通过Maven中央仓库中进行查找:

在这里插入图片描述

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.4.2</version>
</dependency>

在这里插入图片描述

2.redis端口问题

由于redis的端口号6379默认被云服务器防火墙给进行保护起来了,如果手动关闭防火墙很容易被黑客入侵,所以不能够关闭防火墙。

如果想在Java上访问redis的服务器那么可以按照以下的2个方法:

(1)打包给Linux

把写好的Java代码打包成jar包,然后把jar包上传到Linux服务器上执行,这种方法手动太麻烦了,虽然也有插件,但是不太安全。

(2)配置SSH端口,进行映射

通过 SSH 隧道将本地端口与远程 Redis 服务端口绑定,使 Java 客户端通过本地端口间接访问远程 Redis。

步骤:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看是否成功打开(成功就是下图):在这里插入图片描述

二.Java客户端上使用redis

1.连接Jedis服务器

//连接Redis服务器JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");

2.redis通用命令

try (Jedis jedis = jedisPool.getResource()) {//redis各种命令,就对应jedis对象的各种方法String pong = jedis.ping();System.out.println(pong);}

set/get命令

try (Jedis jedis = jedisPool.getResource()) {System.out.println("get和set的使用");//此处是进行测试,需要将数据库中的数据线清空jedis.flushAll();jedis.set("key1","111");jedis.set("key2","222");SetParams params = new SetParams();params.ex(10);params.xx();jedis.set("key1","333",params);String value = jedis.get("key1");System.out.println("value: " + value);}

exists和del

try (Jedis jedis = jedisPool.getResource()) {System.out.println("exists 和 del 的使用");//此处是进行测试,需要将数据库中的数据线清空jedis.flushAll();jedis.set("key1","111");jedis.set("key2","222");jedis.set("key3","333");jedis.set("key4","444");boolean result = jedis.exists("key1");System.out.println(result);long del = jedis.del("key1");System.out.println(del);result = jedis.exists("key1");System.out.println(result);//删除多个keydel = jedis.del("key2","key3","key4");System.out.println(del);//检查多个key是否存在long result1 = jedis.exists("key2","key3","key4");System.out.println(result1);}

keys

try (Jedis jedis = jedisPool.getResource()) {System.out.println("keys的使用");//此处是进行测试,需要将数据库中的数据线清空jedis.flushAll();jedis.set("key1","111");jedis.set("key2","222");jedis.set("key3","333");jedis.set("key4","444");Set<String> keys = jedis.keys("*");System.out.println(keys);}

ex、ttl、type

try (Jedis jedis = jedisPool.getResource()) {System.out.println("ex、ttl 和 type 的使用");//此处是进行测试,需要将数据库中的数据线清空jedis.flushAll();jedis.set("key1","111");jedis.expire("key1",10);long time = jedis.ttl("key1");System.out.println("剩余时间: " + time);Thread.sleep(3000);time = jedis.ttl("key1");System.out.println("剩余时间: " + time);String s = jedis.type("key1");System.out.println("类型: " + s);} catch (InterruptedException e) {throw new RuntimeException(e);}

3.String类型的命令

mset和mget

try (Jedis jedis = jedisPool.getResource()) {System.out.println("mget 和 mset的使用");jedis.flushAll();jedis.mset("key1","11","key2","22", "key3","33");List<String> list = jedis.mget("key1","key2","key3");System.out.println("value: " + list);}

getrange和setrange

try (Jedis jedis = jedisPool.getResource()) {System.out.println("getrange 和 setrange的使用");jedis.flushAll();jedis.set("key1","asasdsadsaasd");String value = jedis.getrange("key1",2,5);System.out.println("value: " + value);jedis.setrange("key1",2,"123");String value1 = jedis.get("key1");System.out.println("value1: " + value1);}

incr、decr 和 append

try (Jedis jedis = jedisPool.getResource()) {System.out.println("append 、incr 和 decr 的使用");jedis.flushAll();jedis.set("key1","abcdefg");jedis.append("key1","123456");String value = jedis.get("key1");System.out.println("value: " + value);jedis.set("key2","100");long result = jedis.incr("key2");System.out.println("result : " + result);String value2 = jedis.get("key2");System.out.println("value2: " + value2);result = jedis.decr("key2");System.out.println("result : " + result);value2 = jedis.get("key2");System.out.println("value2: " + value2);}

4.List命令

lpush和lrange

try(Jedis jedis = jedisPool.getResource()) {System.out.println("lpush 和 lrange 的使用");jedis.flushAll();jedis.lpush("key1","111","222","333");List<String> result = jedis.lrange("key1",0,-1);System.out.println("result: " + result);}

rpush

try(Jedis jedis = jedisPool.getResource()) {System.out.println("lpush 和 lrange 的使用");jedis.flushAll();jedis.rpush("key1","111","222","333");List<String> result = jedis.lrange("key1",0,-1);System.out.println("result: " + result);}

lpop

try(Jedis jedis = jedisPool.getResource()) {System.out.println("lpop 的使用");jedis.flushAll();jedis.rpush("key1","111","222","333");String result = jedis.lpop("key1");System.out.println("result: " + result);result = jedis.lpop("key1");System.out.println("result: " + result);result = jedis.lpop("key1");System.out.println("result: " + result);result = jedis.lpop("key1");System.out.println("result: " + result);}

rpop

try(Jedis jedis = jedisPool.getResource()) {System.out.println("rpop 的使用");jedis.flushAll();jedis.rpush("key1","111","222","333");String result = jedis.rpop("key1");System.out.println("result: " + result);result = jedis.rpop("key1");System.out.println("result: " + result);result = jedis.rpop("key1");System.out.println("result: " + result);result = jedis.rpop("key1");System.out.println("result: " + result);}

llen

try(Jedis jedis = jedisPool.getResource()) {System.out.println("rpop 的使用");jedis.flushAll();jedis.rpush("key1","111","222","333");long result = jedis.llen("key1");System.out.println("result: " + result);}

brpop

try(Jedis jedis = jedisPool.getResource()) {System.out.println("brpop 的使用");jedis.flushAll();List<String> result = jedis.brpop(3,"key1");System.out.println("result[0]: " + result.get(0));System.out.println("result[1]: " + result.get(1));}

5.Set命令

smembers 和 sadd

try(Jedis jedis = jedisPool.getResource()) {System.out.println("sadd 和 smembers 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");Set<String> result = jedis.smembers("key1");System.out.println("result: " + result);}

sismember

try(Jedis jedis = jedisPool.getResource()) {System.out.println("sismember 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");boolean result = jedis.sismember("key1","11");System.out.println("result: " + result);}

scard

try(Jedis jedis = jedisPool.getResource()) {System.out.println("scard 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");long result = jedis.scard("key1");System.out.println("result: " + result);}

spop

try(Jedis jedis = jedisPool.getResource()) {System.out.println("spop 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");String result = jedis.spop("key1");System.out.println("result: " + result);}

sinter

try(Jedis jedis = jedisPool.getResource()) {System.out.println("sinter 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");jedis.sadd("key2","11","22","44");Set<String> result = jedis.sinter("key1","key2");System.out.println("result: " + result);}

sinterstore

try(Jedis jedis = jedisPool.getResource()) {System.out.println("sinterstore 使用");jedis.flushAll();jedis.sadd("key1","11","22","33");jedis.sadd("key2","11","22","44");long result = jedis.sinterstore("key3","key1","key2");Set<String> result1 = jedis.smembers("key3");System.out.println("result: " + result);System.out.println("result1: " + result1);}

6.Hash命令

hget 和 hset

try(Jedis jedis = jedisPool.getResource()) {System.out.println("hset 和 hget的使用");jedis.flushAll();jedis.hset("key1","f1","11");HashMap<String,String> map = new HashMap<>();map.put("f2","22");map.put("f3","33");jedis.hset("key1",map);String result = jedis.hget("key1","f1");System.out.println("result: " + result);result = jedis.hget("key1","f2");System.out.println("result: " + result);result = jedis.hget("key1","f3");System.out.println("result: " + result);result = jedis.hget("key1","f4");System.out.println("result: " + result);}

hexists

try(Jedis jedis = jedisPool.getResource()) {System.out.println("hexists 的使用");jedis.flushAll();jedis.hset("key1","f1","11");HashMap<String,String> map = new HashMap<>();map.put("f2","22");map.put("f3","33");jedis.hset("key1",map);boolean result = jedis.hexists("key1","f1");System.out.println("result: " + result);result = jedis.hexists("key1","f1111");System.out.println("result: " + result);}

hdel

try(Jedis jedis = jedisPool.getResource()) {System.out.println("hdel 的使用");jedis.flushAll();jedis.hset("key1","f1","11");HashMap<String,String> map = new HashMap<>();map.put("f2","22");map.put("f3","33");jedis.hset("key1",map);long result = jedis.hdel("key1","f1");System.out.println("result: " + result);result = jedis.hdel("key1","f2","f3");System.out.println("result: " + result);result = jedis.hdel("key1","f1111");System.out.println("result: " + result);}

hkeys 和 hvals

try(Jedis jedis = jedisPool.getResource()) {System.out.println("hkeys 和 hvals 的使用");jedis.flushAll();jedis.hset("key1","f1","11");HashMap<String,String> map = new HashMap<>();map.put("f2","22");map.put("f3","33");jedis.hset("key1",map);Set<String> result = jedis.hkeys("key1");System.out.println("result: " + result);List<String> result1 = jedis.hvals("key1");System.out.println("result1: " + result1);}

hmget 和 hmset

try(Jedis jedis = jedisPool.getResource()) {System.out.println("hmset 和 hmget 的使用");jedis.flushAll();HashMap<String,String> map = new HashMap<>();map.put("f1","11");map.put("f2","22");map.put("f3","33");jedis.hmset("key1",map);List<String> result = jedis.hmget("key1","f1","f2","f3");System.out.println("result: " + result);}

7.ZSet命令

zadd 、zrange和zrangewithscores

try (Jedis jedis = jedisPool.getResource()) {System.out.println("zadd 和 zrange 的使用");jedis.flushAll();jedis.zadd("key1",10,"zhangsan");Map<String,Double> map = new HashMap<>();map.put("lisi",20.0);map.put("wangwu",30.0);jedis.zadd("key1",map);List<String> result = jedis.zrange("key1",0,-1);System.out.println("result: " + result);List<Tuple>result1 = jedis.zrangeWithScores("key1",0,-1);System.out.println("result1: " + result1);//拆分出来String member = result1.get(0).getElement();Double score = result1.get(0).getScore();System.out.println("member: " +member);System.out.println("score: " +score);}

zcard

try (Jedis jedis = jedisPool.getResource()) {System.out.println("zcard 的使用");jedis.flushAll();jedis.zadd("key1",10,"zhangsan");Map<String,Double> map = new HashMap<>();map.put("lisi",20.0);map.put("wangwu",30.0);jedis.zadd("key1",map);long result = jedis.zcard("key1");System.out.println("result: " + result);}

zrem

try (Jedis jedis = jedisPool.getResource()) {System.out.println("zrem 的使用");jedis.flushAll();jedis.zadd("key1",10,"zhangsan");Map<String,Double> map = new HashMap<>();map.put("lisi",20.0);map.put("wangwu",30.0);jedis.zadd("key1",map);long result = jedis.zrem("key1","zhangsan","lisi");System.out.println("result: " + result);List<Tuple> result1 = jedis.zrangeWithScores("key1",0,-1);System.out.println("result1: " + result1);}

zscore

try (Jedis jedis = jedisPool.getResource()) {System.out.println("zscore 的使用");jedis.flushAll();jedis.zadd("key1",10,"zhangsan");Map<String,Double> map = new HashMap<>();map.put("lisi",20.0);map.put("wangwu",30.0);jedis.zadd("key1",map);Double result = jedis.zscore("key1","zhangsan");System.out.println("result: " + result);}

zrank

try (Jedis jedis = jedisPool.getResource()) {System.out.println("zrank 的使用");jedis.flushAll();jedis.zadd("key1",10,"zhangsan");Map<String,Double> map = new HashMap<>();map.put("lisi",20.0);map.put("wangwu",30.0);jedis.zadd("key1",map);long result = jedis.zrank("key1","lisi");System.out.println("result: " + result);}

三.Spring客户端使用redis

1.redis的依赖

在这里插入图片描述

2.yml的配置文件

在这里插入图片描述

3. String类型命令

传递redis的文本数据需要注入一个对象(非常重要):在这里插入图片描述

@Autowiredprivate StringRedisTemplate redisTemplate;@GetMapping("/testString")public String testString() {//redisTemplage将不同类型的方法进行了重新排放//插入元素redisTemplate.opsForValue().set("key1","111");redisTemplate.opsForValue().set("key2","222");redisTemplate.opsForValue().set("key2","333");//获取元素String value = redisTemplate.opsForValue().get("key1");System.out.println("value: " + value);return "ok";}

4.List类型

可以通过execute方法来使用redis原生的命令,在execute方法中再使用RedisCallback的函数接口就可以使用了。

@GetMapping("/testList")public String testList() {//使用redis原来的命令redisTemplate.execute((RedisConnection connetion) -> {//清空数据库中的数据connetion.flushAll();return null;});//头插数据redisTemplate.opsForList().leftPush("key","111");redisTemplate.opsForList().leftPush("key","222");redisTemplate.opsForList().leftPush("key","333");//尾删数据String value = redisTemplate.opsForList().rightPop("key");System.out.println("value: " + value);value = redisTemplate.opsForList().rightPop("key");System.out.println("value: " + value);value = redisTemplate.opsForList().rightPop("key");System.out.println("value: " + value);return "ok";}

5.Set类型

@GetMapping("/testSet")public String testSet() {//使用redis原来的命令redisTemplate.execute((RedisConnection connetion) -> {connetion.flushAll();return null;});//插入数据redisTemplate.opsForSet().add("key","111","222","333");//获取数据Set<String> value = redisTemplate.opsForSet().members("key");System.out.println("value: " + value);//数据是否存在Boolean exists = redisTemplate.opsForSet().isMember("key","111");System.out.println("exists: " + exists);//有几条数据long result = redisTemplate.opsForSet().size("key");System.out.println("count: " +result);//删除数据redisTemplate.opsForSet().remove("key","111","222");//获取当前数据个数value = redisTemplate.opsForSet().members("key");System.out.println("value: " + value);return "ok";}

6.Hash类型

@GetMapping("/testHash")public String testHash() {//使用redis原来的命令redisTemplate.execute((RedisConnection connetion) -> {connetion.flushAll();return null;});//插入数据redisTemplate.opsForHash().put("key","f1","111");redisTemplate.opsForHash().put("key","f2","222");redisTemplate.opsForHash().put("key","f3","333");//获取数据String value = (String) redisTemplate.opsForHash().get("key","f1");System.out.println("value: " + value);//判断数据是否存在Boolean exists = redisTemplate.opsForHash().hasKey("key","f1");System.out.println("exists: " + exists);//删除数据redisTemplate.opsForHash().delete("key","f1","f2");//有几条数据long result = redisTemplate.opsForHash().size("key");System.out.println("count: " +result);return "ok";}

7.ZSet类型

@GetMapping("/testZSet")public String testZSet() {//使用redis原来的命令redisTemplate.execute((RedisConnection connetion) -> {connetion.flushAll();return null;});//插入数据redisTemplate.opsForZSet().add("key","zhangsan",10);redisTemplate.opsForZSet().add("key","lisi",20);redisTemplate.opsForZSet().add("key","wangwu",30);//获取数据Set<String> value = redisTemplate.opsForZSet().range("key",0,-1);System.out.println("value: " + value);//获取数据Set<ZSetOperations.TypedTuple<String>>value1 = redisTemplate.opsForZSet().rangeWithScores("key",0,-1);System.out.println("value1: " + value1);//获取member的scoreDouble result = redisTemplate.opsForZSet().score("key","zhangsan");System.out.println("count: " +result);//删除数据redisTemplate.opsForZSet().remove("key","zhangsan");//获取数据长度Long size = redisTemplate.opsForZSet().size("key");System.out.println("size: " + size);//获取数据排行Long rank =  redisTemplate.opsForZSet().rank("key","lisi");System.out.println("rank: " + rank);return "ok";}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词