SpringDataRedis 基本使用
时间:2022-07-28
本文章向大家介绍SpringDataRedis 基本使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.1 简介
1.1.1 概述
Spring Data 中有一个成员 Spring Data Redis,他提供了 RedisTemplate 可以在 Spring 应用中更简便的访问 Redis 以及异常处理及序列化,支持发布订阅等操作。
1.1.2 整合 Spring Data Redis
☞ Spring 整合 Spring Data Redis ☞ Spring Boot 整合 Spring Data Redis
1.2 RedisTemplate 常见 API
1.2.1 operation 接口
RedisTemplate 针对 jedis 客户端中大量 API 进行了归类封装,将同一类型操作封装为 operation 接口
♞ ValueOperations
:简单 string 操作
♞ ListOperations
:针对 list 类型的数据操作
♞ HashOperations
:针对 hash 即 map 类型的数据操作
♞ SetOperations
:set 类型数据操作
♞ ZSetOperations
:zset 类型数据操作
☞ 示例
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/10/10
* @description operation 示例
*/
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void redis() {
redisTemplate.opsForValue().set("name", "张三");
Object name = redisTemplate.opsForValue().get("name");
System.out.println(name);
}
}
1.2.2 BoundKeyOperations
RedisTemplate 提供了对 key 的 bound(绑定) 便捷化操作 API,可以通过 bound 封装指定的 key,然后进行一系列的操作而无须显式的再次指定 Key。
♞ BoundValueOperations
:绑定 string 类型的 key
♞ BoundListOperations
:绑定 list 类型的 key
♞ BoundHashOperations
:绑定 hash 即 map 类型的 key
♞ BoundSetOperations
:绑定 set 类型的 key
♞ BoundZSetOperations
:绑定 zset 类型的 key
☞ 示例
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/10/10
* @description BoundKeyOperations 示例
*/
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void redis() {
Object name = redisTemplate.boundValueOps("name").get();
System.out.println(name);
}
}
1.3 数据操作
1.3.1 通用方法
☞ 删除 key
// 删除单个 key,返回布尔值
redisTemplate.delete(K key);
// 删除多个 key,返回删除的个数
redisTemplate.delete(Collection<K> keys);
☞ 判断 key 是否存在
// 返回布尔值
redisTemplate.hasKey(key);
☞ key 有效时间
// 指定有效时间
redisTemplate.expire(key, time, TimeUnit.MINUTES);
// 获取有效时间,返回值单位为秒
redisTemplate.getExpire(key);
1.3.2 操作 string
☞ 添加数据
// 通过 ValueOperations 设置值
ValueOperations ops = redisTemplate.opsForValue();
// 存入数据
ops.set(key, value);
// 设置过期时间
ops.set(key, value, time, TimeUnit.SECONDS);
// 通过 BoundValueOperations 设置值
BoundValueOperations key = redisTemplate.boundValueOps(key);
key.set(value);
key.set(value, time, TimeUnit.SECONDS);
☞ 获取数据
// 通过 ValueOperations 获取值
redisTemplate.opsForValue().get(key);
// 通过 BoundValueOperations 获取值
redisTemplate.boundValueOps(key).get();
1.3.3 操作 list
☞ 添加数据
// 通过 ValueOperations 设置值
ListOperations opsList = redisTemplate.opsForList();
opsList.leftPush(listKey, listLeftValue);
opsList.rightPush(listKey, listRightValue);
// 存入集合
opsList.rightPushAll(list);
opsList.leftPushAll(list);
// BoundValueOperations 操作类似
☞ 获取数据
// 获取集合中的数据
redisTemplate.boundListOps(listKey).range(startIndex, endindex);
// 根据索引获取数据
redisTemplate.boundListOps(listKey).index(index);
// 集合长度
redisTemplate.boundListOps(listKey).size();
☞ 删除数据
// 从左侧弹出一个元素并返回
redisTemplate.boundListOps(listKey).leftPop();
// 从右侧弹出一个元素并返回
redisTemplate.boundListOps(listKey).rightPop();
// 移出 N 个值为 value 的元素
redisTemplate.boundListOps(listKey).remove(long, value);
☞ 修改数据
// 根据索引修改数据
redisTemplate.boundListOps(listKey).set(index, listLeftValue);
1.3.4 hash
☞ 添加数据
// 通过 BoundValueOperations 设置值
BoundHashOperations hashKey = redisTemplate.boundHashOps(HashKey);
hashKey.put(key, Vaue);
// 添加一个集合
hashKey.putAll(hashMap);
// 通过 ValueOperations 设置值
HashOperations hashOps = redisTemplate.opsForHash();
hashOps.put(HashKey, key, Vaue);
☞ 获取数据
// 获取所有小 key
redisTemplate.boundHashOps(HashKey).keys();
// 根据小 key 获取值
redisTemplate.boundHashOps(HashKey)get(key);
// 获取所有键值对集合
redisTemplate.boundHashOps(HashKey).entries();
☞ 删除数据
// 判断 hash 中是否存在小 key
redisTemplate.boundHashOps(HashKey).hasKey(key);
// 根据小 key 删除值
redisTemplate.boundHashOps(HashKey).delete(key);
1.3.5 set
☞ 添加数据
// 通过 BoundValueOperations 设置值
redisTemplate.boundSetOps(setKey).add(setValue1, setValue2, setValue3);
// 通过 ValueOperations 设置值
redisTemplate.opsForSet().add(setKey, SetValue1, setValue2, setValue");
☞ 获取数据
// 获取所有值
redisTemplate.boundSetOps(setKey).members();
// 获取 set 的长度
redisTemplate.boundSetOps(setKey).size();
☞ 删除数据
// 判断 set 中是否存在改值
redisTemplate.boundSetOps(setKey).isMember(setValue);
// 移出指定的值
redisTemplate.boundSetOps(setKey).remove(setValue);
1.3.6 zset
☞ 添加数据
// 通过 BoundValueOperations 设置值
redisTemplate.boundZSetOps(zSetKey).add(zSetVaule, score);
// 通过 ValueOperations 设置值
redisTemplate.opsForZSet().add(zSetKey, zSetVaule, score);
☞ 获取数据
// 获取元素集合, 按照排名先后(从小到大)
redisTemplate.boundZSetOps(zSetKey).range(key, startIndex, endIndex);
// 获取指定值的分数(权重)
redisTemplate.boundZSetOps(zSetKey).score(zSetVaule);
// 获取 zset 长度
redisTemplate.boundZSetOps(zSetKey).size();
☞ 修改分数
// 修改指定元素的分数
redisTemplate.boundZSetOps(zSetKey).incrementScore(zSetVaule, score);
☞ 删除数据
// 删除指定元素
redisTemplate.boundZSetOps(zSetKey).remove(zSetVaule);
// 删除指定索引范围的元素
redisTemplate.boundZSetOps(zSetKey).removeRange(strat, end);
// 删除指定分数范围的元素
redisTemplate.boundZSetOps(zSetKey).removeRangeByScorssse(strat, end);
- sql数据库打包部署安装
- 打包并自动安装sql数据库
- SQL 2008 r2 安装提示 visual studio 2008 版本错误解决方法
- mssql 获取表空间大小
- SQLite 带你入门
- Windows下Nginx+Mysql+Php(wnmp)环境搭建
- LNMP源码编译安装(centos7+nginx1.9+mysql5.6+php7)
- MySQL SHOW PROFILE(剖析报告)的查看
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- 如何查看已经安装的nginx、apache、mysql和php的编译参数
- 连仕彤博客Centos7安装Mysql数据库
- sql server 2008 操作数据表
- sql server 使用函数辅助查询
- sql server存储过程编程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「Mysql索引原理(十三)」索引案例2-避免多个范围条件
- 「Mysql索引原理(十四)」索引案例3-优化排序
- 字符仿真
- 「Mysql索引原理(十五)」维护索引和表-修复损坏的表
- 「Mysql索引原理(十六)」维护索引和表-更新索引统计信息
- 「Mysql索引原理(十七)」维护索引和表-减少索引和数据的碎片
- 「通信框架Netty4 源码解读(一)」起步,关于IO的简单总结,模拟一个redis客户端
- Unet实现文档图像去噪、去水印
- 「influxDB 原理与实践(一)」安装部署,实现基础的添加删除查询功能
- 「influxDB 原理与实践(二)」详解influxDB的写入与查询
- Nginx系列:https配置
- 笛卡尔积、等值连接、自然连接、外连接一文看懂
- nginx系列:常用利用shell统计日志
- Nginx系列:图片过滤处理
- Nginx系列:几款负载均衡第三方插件的安装与使用