【5种数据结构的操作】RedisTemplate模版类!

RedisTemplate 是 Spring Data Redis 提供的一个操作 Redis 的模板类,它封装了 Redis 的操作,方便开发者进行 Redis 缓存操作。 

可以使用@Autowired注解直接调用!!!

@Autowired
private RedisTemplate redisTemplate;

RedisTemplate对5种数据结构的操作
redisTemplate使用如下几种方法分别针对5种数据结构进行操作:

redisTemplate.opsForValue();//操作stringredisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作listredisTemplate.opsForSet();//操作setredisTemplate.opsForZSet();//操作Zset

 数据结构的操作

(1)redisTemplate.opsForValue(字符串)

 set:新增一个字符串类型的值,key是键,value是值。

 redisTemplate.opsForValue().set("string1","aaa");

设置变量值的过期时间(验证码

redisTemplate.opsForValue().set("string3","ccc",5, TimeUnit.MINUTES); 

get:

  • 获取key键对应的值
  • 截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串
redisTemplate.opsForValue().get("string1");redisTemplate.opsForValue().get("string1",0,2);

append:在原有的值基础上新增字符串到末尾  

 redisTemplate.opsForValue().append("string1","bbb");

getAndSet: 获取原来key键对应的值并重新赋新值   

redisTemplate.opsForValue().getAndSet("string1","aa");

increment: 以增量的方式将double值/long值存储在变量中

redisTemplate.opsForValue().increment("string2",5);

(2)redisTemplate.opsForList(List集合)

 leftPush:从集合左边插入值

redisTemplate.opsForList().leftPush("list1","a");     

 从集合左边开始在v值后边插入新值v1

redisTemplate.opsForList().leftPush("list1","a","b");

从左边批量插入新值 

//方式一
redisTemplate.opsForList().leftPushAll("list2","a1","a2","a3");
//方式二
List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().leftPushAll("list3", strings);

leftPop:默认移除key中最左的一个值 

redisTemplate.opsForList().leftPop("list1");

指定过期时间后删除key中最左的一个值 

redisTemplate.opsForList().leftPop("list2",5,TimeUnit.MINUTES);

range: 获取指定下标间的值

redisTemplate.opsForList().range("list2",0,2);

remove: 从存储在键中的列表中删除等于值的元素的第一个计数事件

redisTemplate.opsForList().remove("list1",0,"a");

(3)redisTemplate.opsForSet(Set集合)

add:向指定key中存放set集合 

long add=redisTemplate.opsForSet().add("set1","1","2","3","4");
redisTemplate.opsForSet().add("set2","5","1","4");

members:通过key获取set集合中的对象值 

Set<String> resultSet = redisTemplate.opsForSet().members("set1");

根据key查看集合中是否存在指定数据 

boolean is=redisTemplate.opsForSet().isMember("set1","1");

size:获取指定key的集合大小

redisTemplate.opsForSet().size("set1");

randomMember:获取指定key的集合中一个随机数据 

redisTemplate.opsForSet().randomMember("set1");

randomMembers:获取指定key的集合中指定个数的随机数据 ,list集合中可能存在重复的数据

redisTemplate.opsForSet().randomMembers("set1",2);

distinctRandomMembers:获取指定key的集合中指定个数的随机数据(去重) 

redisTemplate.opsForSet().distinctRandomMembers("set1",3);

move:将key1对应集合中的值v1,转移到key2集合中

redisTemplate.opsForSet().move("set1","2","set2");

pop:随机弹出指定key对应集合中的一个元素

redisTemplate.opsForSet().pop("set1");

随机弹出指定key对应集合中的指定个数个元素

redisTemplate.opsForSet().pop("set1",2);

remove:批量移除key对应集合中指定的元素

redisTemplate.opsForSet().remove("set1","1","4");

difference:获取key与另一个otherKey集合之间的差值

redisTemplate.opsForSet().difference("set1","set2");

differenceAndStore:获取key与另一个otherKey所对应的集合之间的差值,并将结果存入指定的Key集合中

redisTemplate.opsForSet().differenceAndStore("set1","set2","resultkey");

intersect:获取两个集合中的交集元素

redisTemplate.opsForSet().intersect("set1","set2");

union:获取两个集合的合集,并且去重

redisTemplate.opsForSet().union("set1","set2");

(4)redisTemplate.opsForHash(HashMap集合)

put:新增hashMap值

redisTemplate.opsForHash().put("hashValue","map1","value1");
redisTemplate.opsForHash().put("hashValue","map2","value2");

get:获取key对应的map中,key为var2的map的对应的值

redisTemplate.opsForHash().get("hashValue","map1");

entries:获取key对应的所有map键值对

redisTemplate.opsForHash().entries("hashValue");

keys:获取key对应的map中所有的键

redisTemplate.opsForHash().keys("hashValue");

values:获取key对应的map中所有的值

redisTemplate.opsForHash().values("hashValue"); 

(5) redisTemplate.opsForZSet(set有序集合)

add:添加元素到变量中同时指定元素的分值  

redisTemplate.opsForZSet().add("zset","a",0.1);
redisTemplate.opsForZSet().add("zset","b",0.2);
redisTemplate.opsForZSet().add("zset","c",0.3);

range:获取变量指定区间的元素

redisTemplate.opsForZSet().range("zset",0,2);

reverseRange:获取变量指定区间的元素,按值从高到低排序

 redisTemplate.opsForZSet().reverseRange("zset",0,2);

zCard:获取有序集合中的成员数量   

redisTemplate.opsForZSet().zCard("zset");

remove:从有序集合中移除指定的元素

   redisTemplate.opsForZSet().remove("zset","b","c");

count:统计有序集合中指定值范围内的成员数量

redisTemplate.opsForZSet().count("zset",0.0,0.2);

incrementScore:将指定成员的分数增加指定数值

 redisTemplate.opsForZSet().incrementScore("zset","a",0.2);

rank:获取指定成员在有序集合中的排名(按分数从低到高排序)(排行榜

   redisTemplate.opsForZSet().rank("zset","a");

reverseRank:获取指定成员在有序集合中的排名(按分数从高到低排序)(排行榜

redisTemplate.opsForZSet().reverseRank("zset","a");

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

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

相关文章

VMware vCenter 从6.7跨版本升级至7.0U3N

本文尝试使用 vCenter Server Appliance 管理界面 (VAMI) 进行对vCenter Server Appliance7应用进行小版本升级&#xff0c;从6.7.0.47000升级到7.0.3.01600&#xff08;7.0U3N&#xff09;。 一、升级前的准备工作 1、检查当前运行环境&#xff08;当前为6.7.0.47000&#x…

Git:git clone 之 --recursive 选项

在git的repo中&#xff0c;可能会有子项目的代码&#xff0c;也就是"git中的git" --recursive是递归的意思&#xff0c;不仅会git clone当前项目中的代码&#xff0c;也会clone项目中子项目的代码。 我们有时在git clone的时候漏掉 --recursive选项&#xff0c;导致编…

【办公自动化】用Python批量从上市公司年报中获取主要业务信息

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

python3 重启docker方法

一、工作中的问题 工作中进行测试时&#xff0c;需要修改nacos配置&#xff0c;修改完成后再重启对应的docker容器&#xff0c;让配置生效&#xff0c;研究了下&#xff0c;使用docker库可以做到。 如何修改nacos配置可以参见我的另一篇文章&#xff0c;传送门 python3 修改…

软件测试行业已经卷到什么程度了?

近几个月经常听到IT行业的人员吐槽找工作难的事情&#xff0c;特别是找软件测试工作相比前几年难了很多&#xff0c;以前只要简历一挂网上&#xff0c;每天会接到好多个面试邀请电话&#xff0c;甚至两三天或者一周内就能把工作找好&#xff0c;而现在把简历投了个遍&#xff0…

10. 正则表达式匹配

10. 正则表达式匹配 class IsMatch:"""10. 正则表达式匹配https://leetcode.cn/problems/regular-expression-matching/description/"""def solution(self, s: str, p: str) -> bool:m, n len(s), len(p)memo [[-1] * n for _ in range(m)]…

T-ETL和ELT区别

ETL表示提取、转换和加载&#xff1b;ELT表示提取、加载和转换。都是用于数据集成。 两者区别 ETL和ELT在数据集成过程中有着明显的区别。 ETL ETL&#xff0c;即抽取、转换、加载&#xff0c;是从不同的数据源抽取信息&#xff0c;将其转换为根据业务定义的格式&#xff0c…

在Linux上利用宝塔面板搭建网站,并通过内网穿透方便地实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

IDEA报错:No valid Maven installation found

当我想要用maven进行clean的时候&#xff0c;发现报了这个错误&#xff0c;idea的event logs记录为 网上又说可能是因为你的maven环境没有配置好&#xff0c;我对我的maven进行了检查&#xff0c;发现是没有问题的&#xff0c;在这里提醒大家&#xff0c;如果你以前的项目maven…

计算机竞赛 机器视觉opencv答题卡识别系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 答题卡识别系统 - opencv python 图像识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分…

ChatGPT新增超强插件:文本直接生成视频、海报,支持自定义修改!

全球著名在线设计平台Canva&#xff0c;在ChatGPT Plus&#xff08;GPT-4&#xff09;上推出了插件功能&#xff0c;用户通过文本提示&#xff0c;几秒钟就能生成演示文稿、PPT插图、电子书封面、宴会邀请函等各种精美设计海报&#xff0c;同时支持生成视频。 该插件最强大的功…

怎样为Apache配置文件索引页?

索引页是指当访问一个目录时&#xff0c;自动打开哪个文件作为索引。例如&#xff0c;访问http:/localhost这个地址实际上访问的是http//localhost/index.html,这是因为index.html是默认索引页&#xff0c;可以省略索引页的文件名。 在Apache配置文件confhttpd.conf 中搜索Dir…

爬虫系统的核心:如何创建高质量的HTML文件?

在网页抓取或爬虫系统中&#xff0c;HTML文件的创建是一项重要的任务。HTML文件是网页的基础&#xff0c;包含了网页的所有内容和结构。在爬虫系统中&#xff0c;我们需要生成一个HTML文件&#xff0c;以便于保存和处理网页的内容。 在这种情况下&#xff0c;可以使用Java函数…

Try llama2 in NUC (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2023-09-06 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 据说现在在PC机上可以运行llama2大模型了&#xff0c; Way 1 于是照…

NMAP使用手册

nmap工具的使用 1、目标说明 扫描整个网段 192.168.1.0/24扫描域名所在网段 www.baidu.com/24扫描特定限制地址段 0-255.0-255.77.88以上方式可以混合使用&#xff0c;之间用空格分隔-iL <inputfilename> 从列表输入目标&#xff1a; nmap -sP -iL i:\ip.txt #当需要…

Zebec 生态 AMA 回顾:Nautilus 以及 $ZBC 的未来

在9月7日&#xff0c;Zebec创始人Sam做客社区&#xff0c;并进行了“Nautilus Chain以及$ZBC的未来”主题的AMA访谈。Sam在本次访谈中对Nautilus Chain生态的价值捕获、Zebec生态布局规划、可能会推出的Nautilus Chain治理通证NAUT进行了解读。本文将对本次AMA进行回顾与总结。…

城市内涝监测预警系统:有效降低内涝风险,保障城市安全

近日&#xff0c;受台风“海葵”的影响&#xff0c;福建广东多地遭遇了持续性强降雨的袭击&#xff0c;道路积水严重&#xff0c;“城市看海”模式再次开启&#xff0c;不少网友纷纷调侃房子已经升级为海景房。近年来受极端天气影响&#xff0c;城市内涝灾害越发凸显&#xff0…

orangepi香橙派 ubuntu安装RabbitMQ

- 需先安装erlang&#xff1a;sudo apt install erlang - 完成后在控制台输入命令检查&#xff1a;erl - 安装RabbitMQ:sudo apt install rabbitmq-server - 查看服务状态&#xff1a;service rabbitmq-server status - 添加用户以便远程访问&#xff1a; - 账号密码都…

vue3.0+ts+element ui中如何使用svg图片

1、安装一下依赖 npm install vite-plugin-svg-icons -D2、在vite.config.ts中 import { createSvgIconsPlugin } from vite-plugin-svg-icons; const { resolve } require(path); plugins:[createSvgIconsPlugin({// 配置你存放 svg 图标的目录iconDirs: [resolve(process.…

0015Java程序设计-springboot美食网站

摘 要目 录**绪论**1.1背景及意义1.2 国内外研究概况1.3 研究的内容 开发环境 摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合。 本论文主要介绍基于java的美食网站&#…