redisTemplate不支持zpopmax,解决方案使用reverseRangeWithScore

news2024/10/5 16:38:56

在redis客户端可以使用zpopmax
在这里插入图片描述
redisTemplate不支持zpopmax
在这里插入图片描述

解决方案

使用reverseRangeWithScore
接下来我们进行测试
在这里插入图片描述

我们要返回最大的value,应该是c

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Set;

@SpringBootTest
@RunWith(SpringRunner.class)
public class TEST1 {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void Data(){
//        redisTemplate.opsForZSet().add("goods","a",10);
//        redisTemplate.opsForZSet().add("goods","b",10);
//        redisTemplate.opsForZSet().add("goods","c",11);
        String goods = zPopMaxFromSet("goods");
        System.out.println(goods);

    }


    public String zPopMaxFromSet(String setName) {
        ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
        Set<ZSetOperations.TypedTuple<String>> maxElements = zSetOperations.reverseRangeWithScores(setName, 0, 0);

        if (!maxElements.isEmpty()) {
            ZSetOperations.TypedTuple<String> maxElement = maxElements.iterator().next();
            //获取值
            String element = maxElement.getValue();
            //获取得分
            Double score = maxElement.getScore();
            zSetOperations.remove(setName, element);
            return element;
        }
        return null; // 集合为空
    }
}

在这里插入图片描述
有人想问了zSetOperations.reverseRangeWithScores(setName, 0, 0); 0,0代表什么
开始索引位置和结束位置
在这里插入图片描述
在这里插入图片描述
测试

    @ApiOperation("测试")
    @GetMapping("/test/{start}/{end}")
    public List<String> testRedis(@PathVariable Integer start, @PathVariable Integer end){
        ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
        Set<ZSetOperations.TypedTuple<String>> maxElements = zSetOperations.reverseRangeWithScores("goods", start,end );
        Iterator<ZSetOperations.TypedTuple<String>> iterator = maxElements.iterator();
        ArrayList<String> list = new ArrayList<>();
        while(iterator.hasNext()){
            list.add(iterator.next().getValue());

        }
        return list; // 集合为空
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

记得序列化

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.io.Serializable;



@Configuration
public class RedisConfig {
    /**
     * @param lettuceConnectionFactory
     * @return
     *
     * redis序列化的工具配置类,下面这个请一定开启配置
     * 127.0.0.1:6379> keys *
     * 1) "ord:102"  序列化过
     * 2) "\xac\xed\x00\x05t\x00\aord:102"   野生,没有序列化过
     */
    @Bean
    public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate();

        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
        //设置key序列化方式string
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置value的序列化方式json
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());

        redisTemplate.afterPropertiesSet();

        return redisTemplate;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

挑战100天 AI In LeetCode Day06(热题+面试经典150题)

挑战100天 AI In LeetCode Day06&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-82.1 题目2.2 题解 三、面试经典 150 题-83.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&am…

Python爬虫实战-批量爬取美女图片网下载图片

大家好&#xff0c;我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取美女图片网下载图片&#xff0c;主要是巩固下Python爬虫基础 视频版教程&#xff1a; Python爬虫实战-批量爬取美女图片网下载图片 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取…

本地数据库迁移到云端服务器

工具迁移xtrabackup 创建云服务器——通过云服务器提供的公网地址远程连接XShell——利用迁移工具将数据库从本地迁移到云服务器 &#xff08;1&#xff09;创建云服务器 &#xff08;2&#xff09;远程连接XShell &#xff08;3&#xff09;yum安装mysql &#xff08;4&…

spider-node-初识

spider-node spider想解决的问题1&#xff1a;业务架构层面2&#xff1a;代码层面3&#xff1a;业务&#xff0c;产品&#xff0c;研发&#xff0c;测试之间4: 系统迭代成本高 spider-node 配置讲解spider-node启动 spider想解决的问题 1&#xff1a;业务架构层面 帮助研发团队…

给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一

题目描述&#xff1a;给定 n 个整数&#xff0c;求里面出现次数最多的数&#xff0c;如果有多个重复出现的数&#xff0c;求值最大的那个 输入格式 第一行输入一个整数n(1<n100000)&#xff0c;接下来一行输入n个int 范围内的整数 输出格式 输出出现次数最多的数和出现的…

https证书免费申请

JoySSL是一个提供免费HTTPS证书的权威证书颁发机构&#xff08;CA&#xff09;&#xff0c;其证书广泛应用于网站安全领域。JoySSL致力于提供高质量、安全、可靠的HTTPS证书&#xff0c;以满足各种规模网站的需求。 首先&#xff0c;您需要访问JoySSL的官方网站&#xff0c;并…

【C++】stack | queue | priority_queue | deque

一、stack栈 介绍 1.栈是一种特殊的线性表&#xff0c;其元素遵循“后进先出”的原则&#xff0c;即仅允许在在表的一端进行插入、删除操作&#xff0c;这一模式被称为“后进先出”或LIFO&#xff08;last in fisrt out&#xff09;。 2.从底层实现来看&#xff0c;stack是作…

07-MySQL-进阶-锁InnoDB引擎MySQL管理

涉及资料 链接&#xff1a;https://pan.baidu.com/s/1M1oXN_pH3RGADx90ZFbfLQ?pwdCoke 提取码&#xff1a;Coke 一、锁 ①&#xff1a;概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xf…

【AI编程】ai编程插件汇总iFlyCode、codegeex

1、iFlyCode 开发公司&#xff1a;讯飞 支持IDE: VS Code、IntelliJ IDEA、CLion、PyCharm、WebStorm 支持语言: Python、JavaScript、C、Java 下载地址&#xff1a;https://iflycode.xfyun.cn/ iFlyCode 快捷键列表&#xff1a;  Tab 采纳建议  Esc 拒绝建议  Alt\ 主动…

【NetCore】企业微信你消息推送

前言 慢慢脱离一线开发工作,突然接到一个改善提案需要增加类似短信业务消息提醒。考虑到目前已开通企业微信且短信服务一般需要收费,决定采用企业微信消息提醒。 流程 微信等相关的第三方开发大致流程都类似,如下 注册账号账号认证(为了权限,当然企业微信内部应用不需要…

【数据结构与算法】DFA算法-关键词匹配-java案例实现

该算法往往是用于匹配一些敏感词、绝对词等&#xff0c;从一篇文章中快速找到其中包含的关键词。 实现思路&#xff1a; 先读取所有关键词并存入set集合中。再将set中的关键词存入HashMap中&#xff0c;是以每个关键词字顺序存储&#xff0c;key为一个字、value为一个HashMap。…

机器视觉人体跌倒检测系统 - opencv python 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器视觉人体跌倒检测系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&…

frida hook(深入浅出)

Andrax搭建Android渗透测试环境 编译官方frida源码 APP基于Frida脱壳 Frida Hook的使用方法 Frida逆向分析APP实战 魔改frida到绕过检测的思路 配置fridaserver为后台进程 使用frida-net玩转frida-rpc 内置frida hook到Android系统 内置frida-inject工具到手机系统 三…

I/O控制器

一、概述 I/O设备管理-机械部件(I/O硬件设备)电子部件(I/O控制器)接口(设备与控制器间通信媒介) 二、组成 各寄存器间的编址方式&#xff1a; 三、控制方式 1.轮询程序控制 2.中断程序控制 3.直接存储器访问(DMA)

漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标

在百度地图中&#xff0c;多边形覆盖物表示地图上的多边形区域。这些区域可以是封闭的&#xff0c;也可以是开放的。多边形覆盖物通常用于表示地图上的行政区划、地标或任何需要强调的区域。 多边形覆盖物拥有自己的地理坐标&#xff0c;并能随着地图的拖动或缩放而相应地移动…

2023最新最全【Adobe After Effection 2023】下载安装零基础教程【附安装包】

AE2023下载点这里 教学 1.鼠标右击【Ae2023(64bit)】压缩包选择&#xff08;win11系统需先点击“显示更多选项”&#xff09;【解压到 Ae2023(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Set-up】选择【以管理员身份运行】。 3.点击【文件夹图标】&#xff0c;…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序&#xff0c;使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时&#xff0c;我们首先需要创建一个代理对象proxy&#xff0c;并将其用于发送HTTP请求。然后&#xff0c;我们使用http库的GET方法获取网页内容&#xff0…

Leetcode-LCR 021 删除链表的倒数第 N 个结点

快慢指针&#xff0c;快指针先移动n-1个节点后&#xff0c;慢指针从虚拟头结点出发&#xff08;相当于快慢指针相隔n个节点&#xff09;&#xff0c;快慢指针一起向链表尾依次移动一个结点&#xff0c;当快指针移动到表位时&#xff0c;慢指针正好移到被删除元素的前一个结点&a…

扭矩传感器采用一阶RC滤波

扭矩传感器内部的一阶RC&#xff08;电阻-电容&#xff09;滤波器是一种用于滤除高频噪声和干扰的电路&#xff0c;以确保传感器输出的信号平滑和稳定。这种滤波器通常用于传感器输出信号的处理&#xff0c;以减少测量中的高频噪声。 一阶RC滤波器通常由一个电阻&#xff08;R…

AM5-DB低压备自投装置在河北冠益荣信科技公司洞庭变电站工程中的应用

叶根胜 安科瑞电气股份有限公司 上海嘉定 201800 摘 要&#xff1a;随着电力需求的增加&#xff0c;电力系统对供电可靠性的要求越来越高&#xff0c;许多供电系统已经有两条或两条以上的供电线路。备用电源自动输入装置可有效提高供电可靠性&#xff0c;工作电源故障断开后可…