SpringBoot Redis五种数据类型的简单操作
Posted 代码不是马
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot Redis五种数据类型的简单操作相关的知识,希望对你有一定的参考价值。
简单实现SpringBoot集成Redis操作数据类型
Redis共有五种数据类型:
- string字符串类型 (字符串、整数或者浮点数)
- hash类型 (包含键值对的无序散列表)
- list类型 (链表)
- set集合类 (无序集合)
- sortedSet有序集合 (有序集合)
string操作
@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));
运行结果:
以上是关于SpringBoot Redis五种数据类型的简单操作的主要内容,如果未能解决你的问题,请参考以下文章