文章目录

  • 一.注入StringRedisTemplate
  • 二.写入
    • 2.1 opsForValue().set()
    • 2.2 opsForValue().setIfAbsent()
    • 2.3 opsForValue().setIfPresent()
    • 2.4 opsForValue().getAndSet()
    • 2.5 opsForValue().multiSet()
  • 三.读取
    • 3.1 opsForValue().get()
    • 3.2 opsForValue().getAndSet()
    • 3.2 opsForValue().multiGet()
    • 3.2 opsForValue().size()
  • 四.追加
    • 4.1 opsForValue().append()
  • 五、递增或递减
    • 5.1 opsForValue().increment()
    • 5.2 opsForValue().decrement()
  • 六.删除

关于RedisTemplate的介绍
https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/RedisTemplate.html

关于StringRedisTemplate的介绍
https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/StringRedisTemplate.html

配置redis
https://preparedata.blog.csdn.net/article/details/114291049

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

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

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

本篇主要介绍opsForValue(字符串), 字符串类型的Redis存储引用最广泛, 任意对象都可以序列化字符串后存储
引入jar, org.springframework.boot:spring-boot-starter-data-redis; 版本为2.1.5.RELEASE
不同版本方法可能存在差异

一.注入StringRedisTemplate

@Autowired
private StringRedisTemplate redisTemplate;

二.写入

2.1 opsForValue().set()

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

2.2 opsForValue().setIfAbsent()

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

2.3 opsForValue().setIfPresent()

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

2.4 opsForValue().getAndSet()

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

2.5 opsForValue().multiSet()

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

三.读取

3.1 opsForValue().get()

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

3.2 opsForValue().getAndSet()

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

3.2 opsForValue().multiGet()

//批量获取
List<String> keyList = new ArrayList<>();
keyList.add("key1");
keyList.add("key2");
List<String> valueList = redisTemplate.opsForValue().multiGet(keyList);

3.2 opsForValue().size()

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

四.追加

4.1 opsForValue().append()

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

五、递增或递减

5.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必须可转成数值型
//如果key不存在, 则在默认值0的基础上进行递增或递减
//decrement: 递减;可以是使用负数进行递增
Long num2 = redisTemplate.opsForValue().decrement("key2", 1);
Long num3 = redisTemplate.opsForValue().decrement("key2", -1);

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

六.删除

redisTemplate.delete("key1");

StringRedisTemplate、opsForValue、setIfAbsent、setIfPresent、getAndSet、increment、decrement用法相关推荐

  1. Laravel56查询构建器中的increment和decrement用法

    假如现在有个需求是:用你账户余额去购买一个商品 基本逻辑是 :余额-物品单价 = 最新余额  :然后把最新余额获得后更新数据库中对应余额字段 但是laravel56的查询构建器中提供了更高效更简单的方 ...

  2. C++ increment/decrement/dereference 操作符典型写法

    C++自增(increment).自减(decrement)运算符(operator++,operator--)和取值(dereference ,或称解引用)运算符(operator*)的典型写法,其 ...

  3. java中decrement,Java LongAdder decrement()用法及代码示例

    Java中的LongAdder类创建一个初始和为零的新加法器. Java.LongAdder.decrement()是Java中的内置方法,可将值减少1. 用法: public void decrem ...

  4. java中decrement,Java LongAdder decrement()用法及代碼示例

    Java中的LongAdder類創建一個初始和為零的新加法器. Java.LongAdder.decrement()是Java中的內置方法,可將值減少1. 用法: public void decrem ...

  5. [agc 049E][凸性dp][小计数] Increment Decrement

    妹神的,看不懂 官方题解 前言:博主已经 菜到没救了/kk 由于zz的博主认为官方题解不太好懂,需要一些细节的解释,于是 xjb写了一篇自己都看不懂的题解 题意 定义个一个长度为n的整数序列A的权值如 ...

  6. SpringBoot使用StringRedisTemplate操作Redis字符串

    概述 StringRedisTemplate继承自RedisTemplate<String, String>,当操作对象都是String类型的时候,就使用StringRedisTempla ...

  7. redis-4.0.10集群安装(3台机器,6个node),以及在Spring项目中的集成,redis操作工具类

    1 Redis安装 redis高可用的三种常见的集群方式:redis sentinel .redis cluster(多主机+分布式).redis sharding.接下来主要介绍redis sent ...

  8. 第 5 章 Redis

    第 5 章 Redis 1.Redis 6.0.8 1.1.Redis 6.0.8 版本 官网地址 官网地址:https://redis.io/ 中文官网地址:http://www.redis.cn/ ...

  9. Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)

    总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 link 什么是可重入锁? link 谈谈LockSupport link 谈谈AQS link ...

最新文章

  1. html5 div 鼠标跟随,CSS实用:DIV+CSS打造跟随鼠标的层
  2. rocketmq同步发送超时时间_RocketMQ系列(一)基本概念
  3. 无线路由安全功能的保证之DHCP
  4. 【git】几大区概念
  5. oracle 控制文件在哪里设置_更改Oracle默认的控制文件设置
  6. 第十章 优先级队列 (b3)完全二叉堆:删除与下滤
  7. apr_file_seek 踩坑
  8. TTL转485电路设计
  9. java jdbc6_Java学习-JDBC
  10. html编译圣诞情缘,H5+JS+CSS3 实现圣诞情缘
  11. 【OpenStack】【Keystone】安装与配置详解
  12. Quay (3) - 访问权限管理
  13. Android源码分析(一)-----如何快速掌握Android编译文件
  14. 动态修改EasyUI accordion选中面板的标题(title)
  15. jmeter连接mysql并定义变量提供给后续接口使用
  16. chrome误删书签恢复
  17. IOS快捷指令的用法(快捷指令库使用方法)
  18. JAVA实训项目第一次日志
  19. 美团网副总裁王慧文:所谓“农村包围城市”是一个误解
  20. Mac垃圾文件清理指南

热门文章

  1. 个人作业 项目alpha版本测试
  2. 小程序 设置小程序打开聊天中的素材
  3. Java开发必须会的技能!java程序开发基础彭政答案
  4. 东野圭吾《解忧杂货店》读后感
  5. maven项目指定项目编码
  6. arnold运动模糊nuke合成方法
  7. java设置cpu亲和性_cpu亲和性绑定
  8. vitualbox 挂载win7 共享文件夹
  9. 统计代码放在网站php,网站添加简单访客统计代码
  10. php实现一个简单的访客统计功能