redisTemplate.opsForValue()中方法讲解

查看源码可以看到redisTemplate.opsForValue()中的方法都定义在ValueOperations<K, V> 中,该接口中一共有17个方法:

public interface ValueOperations<K, V> {void set(K key, V value);void set(K key, V value, long timeout, TimeUnit unit);Boolean setIfAbsent(K key, V value);void multiSet(Map<? extends K, ? extends V> map);Boolean multiSetIfAbsent(Map<? extends K, ? extends V> map);V get(Object key);V getAndSet(K key, V value);List<V> multiGet(Collection<K> keys);Long increment(K key, long delta);Double increment(K key, double delta);Integer append(K key, String value);String get(K key, long start, long end);void set(K key, V value, long offset);Long size(K key);Boolean setBit(K key, long offset, boolean value);Boolean getBit(K key, long offset);RedisOperations<K, V> getOperations();
}

下面我们一个一个来讲解

void set(K key, V value)

方法含义:新增一个字符串类型的值,key是键,value是值

使用方法:

redisTemplate.opsForValue().set("stringkey", "stringvalue");

void set(K key, V value, l
ong timeout, TimeUnit unit)

方法含义:新增一个字符串类型的值,并且设置变量值的过期时间。key是键,value是值,timeout 过期时间,unit 过期时间单位。

unit 过期时间单位取值如下:

DAYS:天时间单元代表24小时
HOURS:小时时间单元代表60分钟
MICROSECONDS:微秒时间单元代表千分之一毫秒
MILLISECONDS:毫秒时间单元代表千分之一秒
MINUTES:分钟时间单元代表60秒
NANOSECONDS:纳秒时间单元代表千分之一微秒
SECONDS:时间单元代表1秒

使用方法,把timeoutkey对应的值设置过期时间为10秒:

redisTemplate.opsForValue().set("timeoutkey", "timeoutvalue", 10, TimeUnit.SECONDS);

Boolean setIfAbsent(K key, V value)

方法含义:如果键不存在则新增,存在则不改变已经有的值。

使用方法:

redisTemplate.opsForValue().setIfAbsent("newkey", "newvalue");

V get(Object key)

方法含义:获取key键对应的值

使用方法:

redisTemplate.opsForValue().get("stringkey");

String get(K key, long start, long end)

方法含义:截取key键对应值的字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。下标从1开始,如果stringkey对应的值为value,那么下面这个方法返回为:al

使用方法:

redisTemplate.opsForValue().get("stringkey", 2, 3);

V getAndSet(K key, V value)

方法含义:获取原来key键对应的值并重新赋新值

使用方法:

redisTemplate.opsForValue().getAndSet("stringkey", "newvalue");

void set(K key, V value, long offset)

方法含义:覆盖从指定位置开始的值

使用方法:

redisTemplate.opsForValue().set("stringkey", "a", 1); 

如下三个方法放在一起讲:

void multiSet(Map<? extends K, ? extends V> map)

Boolean multiSetIfAbsent(Map<? extends K, ? extends V> map)

List multiGet(Collection keys)

方法含义: multiSet:设置map集合到redis;multiSetIfAbsent:如果对应的map集合名称不存在,则添加,如果存在则不做修改;multiGet:根据集合取出对应的value值。

先使用multiSet设置相应的值,如下:

       Map map = new HashMap();map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");redisTemplate.opsForValue().multiSet(map);

在使用multiGet获得相应的值

       List list = new ArrayList();list.add("key1");list.add("key2");list.add("key3");List<String> valueList = redisTemplate.opsForValue().multiGet(list);for (String value2 : valueList) {System.out.println("通过multiGet(Collection<K> keys)方法获取map值:" + value2);}

打印结果如下:

img

使用multiSetIfAbsent 设置相应的值,map集合中的key与之前一样,valeu设置的不一样

       Map map1 = new HashMap();map1.put("key1", "value11");map1.put("key2", "value22");map1.put("key3", "value33");List list1 = new ArrayList();list1.add("key1");list1.add("key2");list1.add("key3");redisTemplate.opsForValue().multiSetIfAbsent(map1);List<String> valueList1 = redisTemplate.opsForValue().multiGet(list1);for (String value1 : valueList1) {System.out.println("通过multiGet(Collection<K> keys)方法获取map值:" + value1);}

打印结果如下,我们可以看到没有做任何修改

img

使用multiSetIfAbsent 设置相应的值,map集合中的key,valeu设置的都不一样

       Map map1 = new HashMap();map1.put("key11", "value11");map1.put("key21", "value22");map1.put("key31", "value33");List list1 = new ArrayList();list1.add("key11");list1.add("key21");list1.add("key31");redisTemplate.opsForValue().multiSetIfAbsent(map1);List<String> valueList1 = redisTemplate.opsForValue().multiGet(list1);for (String value1 : valueList1) {System.out.println("通过multiGet(Collection<K> keys)方法获取map值:" + value1);}

打印结果如下,我们可以看到新增了3个key:

img

备注说明:multiSetIfAbsent 只要map中有一个key存在,则都不做修改。

Long increment(K key, long delta)
Double increment(K key, double delta)

方法含义:以增量的方式将值存储在变量中,第二个参数为递增因子

使用方法:

       redisTemplate.opsForValue().set("doublevalue", 1);redisTemplate.opsForValue().increment("doublevalue", 1.2);//以1.2递增,递增后为2.2redisTemplate.opsForValue().increment("doublevalue", 1);//以1递增,递增后为3.2

Integer append(K key, String value)

方法含义:在原有的值基础上新增字符串到末尾

使用方法:

redisTemplate.opsForValue().set("stringkey", "value");
redisTemplate.opsForValue().append("stringkey", "appendValue");

备注说明:如果append方法不起效果需要进行配置将 template.setValueSerializer(jackson2JsonRedisSerializer);修改为:template.setValueSerializer(new StringRedisSerializer());这个是因为序列化的原因,RedisTemplateput进去的值是序列化成二进制后的,但是append的值是直接加的。所以get的时候反序列化直接变成空值了。如果你存的值是字符串类型,建议直接使用StringRedisTemplate,这个不会序列化成二进制,append是可以用的。而且直接在redis客户端存的值也能取到

Long size(K key)

方法含义: 获取指定字符串的长度

使用方法:

Long size = redisTemplate.opsForValue().size("stringkey");

Boolean setBit(K key, long offset, boolean value)
Boolean getBit(K key, long offset)

方法含义:setBit: key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value;getBit:判断指定的位置ASCII码的bit位是否为true或者false

使用方法:

       redisTemplate.opsForValue().set("stringkey", "value");redisTemplate.opsForValue().setBit("stringkey", 1, true);boolean flag= redisTemplate.opsForValue().getBit("stringkey", 1);

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

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

相关文章

spring boot配置dubbo(properties)

spring boot与dubbo配置(properties) dubbo和zookeeper配合使用&#xff0c;具体的它们之间的配置这里不说了。 一、spring boot与dubbo配置有两种方式&#xff1a; 1&#xff09;spring boot在自己的配置文件application.properties 配置dubbo。&#xff08;本篇主要说这个&…

spring boot配置dubbo(XML)

上一篇写的是spring boot在自己的properties配置文件中简单配置dubbo的步骤&#xff0c;那种配置有很多的功能&#xff08;比如超时时间、是否检查&#xff09;等等&#xff0c;配置起来也挺麻烦的&#xff0c;而我们也习惯传统的那种XML形式的dubbo配置。 这一篇写的是spring…

spring boot配置dubbo注意事项

spring boot配置dubbo注意事项 通过前两篇文章&#xff0c;知道了spring boot配置dubbo有两种方式。具体请回顾前两篇文章吧。 现在主要是说下spring boot在自己的application.properties 文件里配置dubbo内容&#xff0c;这种方式遇到的问题。 问题一&#xff1a;dubbo接口…

spring boot配置mybatis和事务管理

spring boot配置mybatis和事务管理 一、spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下&#xff1a; <!-- Spring Boot 启动父依赖 --> <parent><groupId>org.springframework.boot</groupId><artifactId>spr…

android hud sdk,Android HUD SDK | 百度地图API SDK

简介为了给用户提供更安全优质的服务&#xff0c;LBS开放平台针对Android平台的SDK产品引入Key认证机制&#xff0c;用户在使用之前需要先申请配置Key&#xff0c;并在程序相应位置填写您的Key。Key机制&#xff1a;每个Key仅且唯一对于1个应用验证有效&#xff0c;即对该Key配…

spring boot配置druid(德鲁伊)

spring boot配置druid(德鲁伊) 关于druid的介绍请看 阿里巴巴温少访谈 1.引入相关依赖&#xff0c;全部依赖是上一篇spring bootmybatis依赖的基础上&#xff0c;再加上下边的依赖&#xff0c;如下&#xff1a; <!-- Druid数据库连接池组件 --> <dependency><…

spring boot----简单入门

Spring Boot其实就是spring,为了简便spring框架的搭建&#xff0c;快速开发项目而推出的另一种方式。使用spring boot&#xff0c;搭建框架将变得特别快。可以有更多的时间在代码性能上优化了。 一、Spring Boot个人感觉的优点: ​ 1&#xff09;搭建一个简单运行的框架很快&…

android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版

好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版书法字体2017.06.23css压缩分享一款好用的JS混淆加密工具:HDS JSObfuscator 2.14版&#xff0c;HDS JSObfuscator兼顾了JS压缩、JS混淆和JS加密三大功能。js加密工具的主要作用就是为了保护Javascript代码&#xff0c…

Maven 建立父子项目和跨项目调用内容的步骤

使用Maven管理项目&#xff0c;同时我们是做微服务&#xff0c;所以对于微服务项目来说&#xff0c;使用Maven建立起一个父子项目这种关系&#xff0c;很方便管理&#xff08;只是个人感觉&#xff09; 设计层面 &#xff08;1&#xff09;服务端和客户端肯定是分开写的&…

android支付宝运动修改器,一键修改支付宝运动步数-修改支付宝运动步数工具下载不要root手机版-西西软件下载...

修改支付宝运动步数工具是一款支付宝运动步数修改工具和教程,QQ微信也可以修改&#xff0c;最近在支付宝中推出了各种运动活动&#xff0c;很多朋友表示想要直接刷步数&#xff0c;不想去亲自运动来增加步数。那么下面手机乐园水银师小编就为大家介绍了支付宝快速刷步数的方法&…

spring boot配置tomcat部署

spring boot本身默认为jar包运行&#xff0c;可以改为war包&#xff0c;然后运行在tomcat里 具体修改的步骤如下&#xff1a; 1.在pom.xml文件里添加需要的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>s…

android同步aar到jcenter,android上传aar到jcenter

一、jcenter配置1、jcenter官网注册账号官网地址&#xff1a;https://bintray.com注册页面&#xff1a;2、注册成功记录API Key 鼠标放在账户名上&#xff0c;点击Edit Profile,选择API Key,在这里是需要输入登录密码的&#xff0c;然后就可以看到你的key3、创建仓库点击此处进…

spring boot配置logback日志

spring boot配置logback日志 在上一篇spring boot入门里提过&#xff0c;Spring Boot默认的日志打印是logback,所以配置logback日志会很简单&#xff0c;但是也有注意的地方。 本次配置日志的需求 日志需要控制台打印和文件打印两种。其中文件打印按照日志级别分别保存到各自…

springboot-项目获取resources下文件的方法

spring项目获取resources下文件的方法 最近写读取模板文件做一些后续的处理&#xff0c;将文件放在了项目的resources 下&#xff0c;发现了一个好用的读取方法&#xff1a; 比如上边是你需要读取的文件&#xff1a; 读取的方法如下&#xff1a; //File file ResourceUtils…

几款经典好用的Android,经典实用 Android十款生活必备软件推荐

【IT168 应用】在众多Android应用中有许多优秀的生活方式软件&#xff0c;它们为我们的生活提供了各方面的服务&#xff0c;例如像查看天气预报、搜索周边美食、提醒重要事件等等。大家已经慢慢的熟悉了移动互联生活&#xff0c;尤其是工作中的白领&#xff0c;手机更成为了他们…

springboot配置单独的参数文件

一、介绍 是不是经常用Value注解&#xff1f;用过springboot的都知道它是从application.properties文件中引入某个变量的值&#xff0c;是不是已经灰常熟悉了&#xff1f; 默认在springboot启动后&#xff0c;加载application.properties文件&#xff0c;通过Value("${}&…

nacos初探--作为配置中心

什么是nacos Nacos 支持基于 DNS 和基于 RPC 的服务发现&#xff08;可以作为springcloud的注册中心&#xff09;、动态配置服务&#xff08;可以做配置中心&#xff09;、动态 DNS 服务。 官方介绍是这样的&#xff1a; Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提…

Module build failed: Error: Cannot find module ‘node-sass‘ Require stack报错解决

Module build failed: Error: Cannot find module ‘node-sass’ Require stack报错解决 异常信息 解决方法 设置用淘宝镜像下载 npm install --save-dev node-sass --registryhttps://registry.npm.taobao.org --disturlhttps://npm.taobao.org/dist --sass-binary-sitehtt…

xp系统怎样添加桌面计算机名,教你win10系统电脑桌面怎么添加日历

很多用户都会选择在电脑的桌面上建立一个日历小挂件来提醒自己&#xff0c;其实在电脑桌面添加日历&#xff0c;可防止用户耽误工作进程的安排&#xff0c;不知win10系统电脑桌面怎么添加日历的用户&#xff0c;请来看看下面的介绍吧。日历对很多用户来说是非常重要的&#xff…

什么是Nacos?Nacos注册配置中心介绍

一、什么是Nacos 英文全称Dynamic Naming and Configuration Service&#xff0c;Na为naming/nameServer即注册中心,co为configuration即注册中心&#xff0c;service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民 二、Nacos原理 nacos简单介绍 Nacos注册中心…