一身转战三千里,一剑曾当百万师。这篇文章主要讲述SpringBoot Redis五种数据类型的简单操作相关的知识,希望能为你提供帮助。
简单实现SpringBoot集成Redis操作数据类型
Redis共有五种数据类型:
- string字符串类型 (字符串、整数或者浮点数)
- hash类型 (包含键值对的无序散列表)
- list类型 (链表)
- set集合类 (无序集合)
- sortedSet有序集合 (有序集合)
@Test
public void stringTest()
//添加
redisTemplate.opsForValue().set("test","hello world");
//获取
String test = (String) redisTemplate.opsForValue().get("test");
//设置失效时间
redisTemplate.opsForValue().getOperations().expire("test",10,TimeUnit.SECONDS);
//删除
redisTemplate.delete("test");
log.info("test:",test);
打印结果:
文章图片
hash操作
@Test
public void hashTest()
//添加单个值
redisTemplate.opsForHash().put("hash","test","test");
//添加map
Map<
String,Object>
map = new HashMap<
>
();
map.put("test1","test1");
map.put("test2","test2");
map.put("test3","test3");
redisTemplate.opsForHash().putAll("map",map);
//获取单个值
String test = (String) redisTemplate.opsForHash().get("hash", "test");
//获取整个散列值
Map<
Object, Object>
map1 = redisTemplate.opsForHash().entries("map");
log.info("单个值:",test);
log.info("整个散列值:",map1);
打印结果:
文章图片
list操作
@Test
public void listTest()
//从左边插入
redisTemplate.opsForList().leftPush("list","2");
redisTemplate.opsForList().leftPush("list","1");
redisTemplate.opsForList().leftPush("list","0");
//从右边插入
redisTemplate.opsForList().rightPush("list","3");
redisTemplate.opsForList().rightPush("list","4");
redisTemplate.opsForList().rightPush("list","5");
//范围取值 0 -1 取全部
List list = redisTemplate.opsForList().range("list", 0, -1);
log.info("全部数据list:",list);
String list1 = redisTemplate.opsForList().index("list", 3);
log.info("下标为三的数据list:",list1);
String list2 = redisTemplate.opsForList().leftPop("list");
log.info("从左边删除并返回值list:",list2);
String list3 = redisTemplate.opsForList().rightPop("list");
log.info("从右边删除并返回值list:",list3);
Long list4 = redisTemplate.opsForList().size("list");
log.info("list长度:",list4);
//设置失效时间
redisTemplate.opsForList().getOperations().expire("list",10, TimeUnit.SECONDS);
运行结果:
文章图片
set操作
@Test
public void setTest()
//如果数据存在返回0 不存在返回插入数据的个数
Long add = redisTemplate.opsForSet().add("set", "string", "hash", "list","list");
//获取集合
Set<
String>
set = redisTemplate.opsForSet().members("set");
//因为set是不可重复的 所以只有一个list
log.info("获取集合set:",set);
log.info("判断set是否存在:",redisTemplate.opsForSet().isMember("set","set"));
redisTemplate.opsForSet().add("set2", "string", "hash", "set");
log.info("返回集合的并集:",redisTemplate.opsForSet().union("set","set2"));
log.info("返回集合的交集:",redisTemplate.opsForSet().intersect("set","set2"));
log.info("返回集合set中存在set2中不存在的数据:",redisTemplate.opsForSet().difference("set","set2"));
运行结果
文章图片
sortedSet
@Test
public void sortSet()
//与list操作相似
//添加数据 score代表权重
redisTemplate.opsForZSet().add("zset","string",1);
redisTemplate.opsForZSet().add("zset","hash",2);
redisTemplate.opsForZSet().add("zset","list",3);
redisTemplate.opsForZSet().add("zset","list",4);
//值相会将权重替换掉
//获取全部的值
log.info("zset全部的值:",redisTemplate.opsForZSet().range("zset",0,-1));
//获取值对应的score
log.info("获取list对应的score:",redisTemplate.opsForZSet().score("zset","list"));
//获取值对应排名 从0开始
log.info("获取list对应的排名:",redisTemplate.opsForZSet().rank("zset","list"));
//根据score范围获取值 score改为时间戳 可实现延时队列
log.info("根据score范围获取值 :",redisTemplate.opsForZSet().rangeByScore("zset",2,3));
运行结果:
文章图片
推荐阅读
- JQuery Datatable 请求数据解析#yyds干货盘点#
- Selenium3自动化测试31Cookie处理
- #yyds干货盘点# 程序员是这样学习中药学知识的,先用python采集分析一波
- 初识dosker+安装docker
- CentOS8安装Geant4笔记(Geant4介绍编译和安装)
- (服务注册是如何发起的)
- Spring认证指南(了解如何使用 Gemfire 的数据结构构建应用程序)
- JavaScript 数据处理 - 映射表篇
- ZookeeperKafka 单机版安装