当前位置: 首页 > news >正文

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);

            //删除多个key
            del = 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的文本数据需要注入一个对象(非常重要):在这里插入图片描述

@Autowired
    private 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的score
        Double 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";
    }

相关文章:

  • C++笔记-模板初阶,string(上)
  • Notepad++正则匹配案例
  • 记一个阿里云CDN域名配置不当引起服务鉴权失效问题
  • VMware安装Home Assistant避坑指南
  • 创建Spring Boot项目有哪几种方式
  • [从零开始学习JAVA ] 了解线程池
  • 【区块链安全 | 第十六篇】类型之值类型(三)
  • 20-dfs-N皇后问题(中等)
  • TCP三次握手,四次挥手,再次总结
  • ubuntu22安装tenserflow0.12.1
  • Java 数据库连接池
  • Mybatis_Plus中的条件构造器和常用接口,插件
  • 【算法手记8】NC95 数组中的最长连续子序列 字母收集
  • AI 只能聊天、生成图片、生成视频吗?
  • 封装了一个iOS多分区自适应宽度layout
  • SQL生成ER图/AI生成ER图,智能生成ER图/在线快速编写ER图
  • 全局安装 Entity Framework Core (EF Core)
  • Redis持久化
  • 当 Windows 10 的 C 盘快满时,可以通过以下方法来释放空间
  • Redis-04.Redis常用命令-字符串常用命令
  • 辽宁大连建设工程信息网站/怎样搭建一个网站
  • 一个做礼品的网站/下载百度app免费下载安装
  • 陕西网站建设方案/深圳网站seo推广
  • 外国做动漫图片的网站叫什么/seo优化包括哪些内容
  • 郑州网站建设 智巢/seo关键词选择及优化
  • 天津网站优化哪家快/珠海网站建设制作