RedisTemplate之String类型常用方法详解

简介: RedisTemplate之String类型常用方法详解

Redis简介


  redis是一款开源的Key-Value数据库,运行在内存中,由C语言编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 等。


Spring Data Redis


  Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。 spring-data-redis针对jedis提供了如下功能:

  连接池自动管理,提供了一个高度封装的“RedisTemplate”类 针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,将事务操作封装,有容器控制。针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer)

  • ValueOperations:简单K-V操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:针对list类型的数据操作


String类型常用方法如下:


判断是否有key所对应的值


格式如下:

redisTemplate.hasKey(key)

返回结果:有则返回true,没有则返回false


取值

根据key值,查询返回对应的值。格式如下:

redisTemplate.opsForValue().get(key)

返回结果:有则取出key值所对应的值


删除单个key值

删除单个key值 格式如下:

redisTemplate.delete(key)


批量删除key

批量删除key格式如下:

redisTemplate.delete(keys) 


key值转序列号

将当前传入的key值序列化为byte[]类型

redisTemplate.dump(key)


设置过期时间

设置过期时间

public Boolean expire(String key, long timeout, TimeUnit unit) {
    return redisTemplate.expire(key, timeout, unit);
 }
public Boolean expireAt(String key, Date date) {
    return redisTemplate.expireAt(key, date);
  }


查找匹配的key值

查找匹配的key值,返回一个Set集合类型

public Set<String> getPatternKey(String pattern) {
    return redisTemplate.keys(pattern);
}


修改key

修改redis中key的名称

public void renameKey(String oldKey, String newKey) {
    redisTemplate.rename(oldKey, newKey);
}


返回传入key所存储的值的类型

public DataType getKeyType(String key) {
    return redisTemplate.type(key);
}


如果旧值存在时,将旧值改为新值

public Boolean renameOldKeyIfAbsent(String oldKey, String newKey) {
    return redisTemplate.renameIfAbsent(oldKey, newKey);
}


从redis中随机取出一个key

redisTemplate.randomKey()


返回当前key所对应的剩余过期时间

public Long getExpire(String key) {
    return redisTemplate.getExpire(key);
}


返回剩余过期时间并且指定时间单位

public Long getExpire(String key, TimeUnit unit) {
    return redisTemplate.getExpire(key, unit);
}


将key持久化保存

public Boolean persistKey(String key) {
    return redisTemplate.persist(key);
}


将当前数据库的key移动到指定redis中数据库当中

public Boolean moveToDbIndex(String key, int dbIndex) {
    return redisTemplate.move(key, dbIndex);
}


设置当前的key以及value值

redisTemplate.opsForValue().set(key, value)


设置当前的key以及value值并且设置过期时间

redisTemplate.opsForValue().set(key, value, timeout, unit)


返回key中字符串的子字符

public String getCharacterRange(String key, long start, long end) {
    return redisTemplate.opsForValue().get(key, start, end);
}


将旧的key设置为value,并且返回旧的key

public String setKeyAsValue(String key, String value) {
    return redisTemplate.opsForValue().getAndSet(key, value);
}


批量获取值

public List<String> multiGet(Collection<String> keys) {
    return redisTemplate.opsForValue().multiGet(keys);
 }


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

redisTemplate.opsForValue().append(key, value)


以增量的方式将double值存储在变量中

public Double incrByDouble(String key, double increment) {
    return redisTemplate.opsForValue().increment(key, increment);
 }


通过increment(K key, long delta)方法以增量方式存储long值(正值则自增,负值则自减)

public Long incrBy(String key, long increment) {
    return redisTemplate.opsForValue().increment(key, increment);
}


如果对应的map集合名称不存在,则添加否则不做修改

Map valueMap = new HashMap();  
valueMap.put("valueMap1","map1");  
valueMap.put("valueMap2","map2");  
valueMap.put("valueMap3","map3");  
redisTemplate.opsForValue().multiSetIfAbsent(valueMap); 


设置map集合到redis

Map valueMap = new HashMap();  
valueMap.put("valueMap1","map1");  
valueMap.put("valueMap2","map2");  
valueMap.put("valueMap3","map3");  
redisTemplate.opsForValue().multiSet(valueMap);  


获取字符串的长度

redisTemplate.opsForValue().size(key)


用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始

redisTemplate.opsForValue().set(key, value, offset)


重新设置key对应的值,如果存在返回false,否则返回true

redisTemplate.opsForValue().setIfAbsent(key, value)


将值 value 关联到 key,并将 key 的过期时间设为 timeout

redisTemplate.opsForValue().set(key, value, timeout, unit)


将二进制第offset位值变为value

redisTemplate.opsForValue().setBit(key, offset, value)


对key所储存的字符串值,获取指定偏移量上的位(bit)

redisTemplate.opsForValue().getBit(key, offset)


结语


  关于RedisTemplate之String类型常用方法详解就已经介绍完了,相信大家对RedisTemplate之String类型常用方法都有了初步的了解,这都是基本的Redis操作,更深入的大家可以继续研究一起探讨。


目录
相关文章
|
6月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
397 5
|
7月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
203 0
|
9月前
|
Java
介绍String.format()方法中的格式占位符用法。
通过综合使用它们,可以在Java中构造非常具体和高度定制的输出格式。这对于输出报道、创建用户界面或者任何需要精确控制输出格式的场合都非常有用。记住,当使用格式化方法时,需要确保提供的输入参数与占位符类型匹配,否则会抛出 java.util.IllegalFormatException。
1117 0
|
10月前
|
存储 JSON JavaScript
[go]byte类型, string 类型, json 类型
本文介绍了Go语言中byte类型的基本概念、特点及用法。byte是8位无符号整数,取值范围为0-255,常用于二进制数据操作,如网络通信和文件读写。文章还详细说明了byte与字符串的转换、遍历byte数据以及与其他类型间的转换。此外,探讨了Go中json.Marshal和json.Unmarshal函数实现[]byte与JSON间的转换,并对比了[]byte与JSON的区别,帮助开发者更好地理解其应用场景与差异。
354 2
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
356 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
280 2
JS算法必备之String常用操作方法
|
XML Java API
List与String相互转化方法汇总
本文汇总了List与String相互转化的多种方法,包括使用`String.join()`、`StringBuilder`、Java 8的Stream API、Apache Commons Lang3的`StringUtils.join()`以及Guava的`Joiner.on()`方法实现List转String;同时介绍了使用`split()`方法、正则表达式、Apache Commons Lang3的`StringUtils.split()`及Guava的`Splitter.on()`方法实现String转List。
2622 1
List与String相互转化方法汇总
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
255 4
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
220 3
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
290 2