StringRedisTemplate常用方法小记

1 篇文章 0 订阅

转载自:

StringRedisTemplate、opsForValue、setIfAbsent、setIfPresent、getAndSet、increment、decrement用法_wx64422c161e8a1的技术博客_51CTO博客

StringRedisTemplate继承了RedisTemplate<String,String, String>,的key和ivalue都必须是String类型


Redis支持五种数据类型:string(字符串),hash(哈希),list(列表表),set(集合)及zset(sorted set:有序集合)


StringRedisTemplate中包含opsForValue(字符串),opsForZSet(sorted set:有序集合),opsForList(列表),opsForSet(集合),opsForHash(哈希)的处理

一.写入
1.opsForValue().set()

//存入,无过期时间
redisTemplate.opsForValue().set("key1","value1");
//存入,有过期时间,过期时间到后,自动删除
redisTemplate.opsForValue().set("key1","value1",60,TimeUnit.SECONDS);


2 opsForValue().setlfAbsent()

//当前key不存在,写入值,并返回true;当前key已经存在,不处理,返回false; Absent:缺少的,
Boolean bool = redisTemplate.opsForValue().setIfAbsent("key1","value1",60,TimeUnit.SECONDS);


3 opsForValue().setlfPresent()

//当前key已经存在,写入值,并返回true;当前key不存在,不处理,返回false;;Present:存在的
Boolean bool1 = redisTemplate.opsForvalue().setifpresent("key1","value1",60,TimeUnit.SECONDS);


4 opsForValue().getAndSet()

//获取原来key的value,再将新的value写入
String dataStri = redisTemplate.opsForValue().getAndSet("keyy1","value2");


5 opsForValue().multiSet()

//批量设置
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
redisTemplate.opsForValue().multiSet(map);


二.读取
1 opsForValue().get()

String datastr = redisTemplate.opsForValue().get("key1");


2 opsForValue().getAndSet()

//获取原来key的value,再将新的value写入
String dataStr1 = redisTemplate.opsForValue().getAndSet("key1", "value2");


3 opsForValue().multiGet()

//批量获取
List<String> keylist = new Arraylist<>();
keyList.add("key1");
keyList.add("key2");
List<String> valuelist = redisTemplate.opsForV.alue().multiGet(keylist);


3.2 opsForValue().size()

//获取value的字符长度
Long len = redisTemplate.opsForValue().size("key1");


三.追加
1 opsForValue().append()

//追加到末尾,返回追加后的字符长度;如果key不存在,则新设置value;如果key存在,则原value追加新的value;
Integer a = redisTemplate.opsForValue().append("key1","value2");

四、递增或递减
1 opsForValue().increment()

//值进行递增或递减,返回新value;要求value必须可转成数值理
//如果key不存在,则在默认值0的基础上进行递增或递减
//increment:递增;可以是使用负数进行递减
Long num1 = redisTemplate.opsForvalue().increment("key1", -1);
Long num = redisTemplate.opsForValue().increment("key1", 1);


5.2 opsForValue().decrement()

//值进行递增或递减,返回新的值;要求value必须可转成数值型2
//如果key不存在,则在默认值0的基础上进行递增或递减
//decrement:递减;可以是使用负数进行递增
Long num2 = redisTemplate.opsForValue().decrement("key2", 1);
Long num3 = redisTemplate.opsForvalue().decrement("key2", -1)

特别注意:decrement使用时,当参数delta递减值为负数时,表示递增,逻辑相反


五.删除

redisTemplate.delete("key1");


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.javaJava类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值