当前位置: 首页 > ds >正文

springboot中操作redis的步骤

springboot中操作redis的步骤

环境搭建

1,在pom.xml文件中导入SpringbootDataReedis的maven坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2,配置redis数据源
在aoolication.yml文件中添加如下代码:

spring:redis:host: localhostport: 6379password: 123456database: 10

解释说明:
database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。
可以通过修改Redis配置文件来指定数据库的数量。

3,编写配置类,创建RedisTemplate对象、

@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

解释说明:

当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为
JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为
StringRedisSerializer序列化器。

4,通过

RedisTemplate对象操作Redis.可以在test下新建测试类


@SpringBootTest
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate(){System.out.println(redisTemplate);//string数据操作ValueOperations valueOperations = redisTemplate.opsForValue();//hash类型的数据操作HashOperations hashOperations = redisTemplate.opsForHash();//list类型的数据操作ListOperations listOperations = redisTemplate.opsForList();//set类型数据操作SetOperations setOperations = redisTemplate.opsForSet();//zset类型数据操作ZSetOperations zSetOperations = redisTemplate.opsForZSet();}
}

运行测试类:
在这里插入图片描述
说明RedisTemplate对象注入成功,并且通过该RedisTemplate对象获取操作5种数据类型相关对象。

上述环境搭建完毕后,接下来,我们就来具体对常见5种数据类型进行操作。

@Autowiredprivate RedisTemplate redisTemplate;/** 测试String类型数据* */@Testpublic void testString(){//string类型的数据操作方法,对应的Redis操作命令为set和get//set,get,setex,setnxredisTemplate.opsForValue().set("test","123");redisTemplate.opsForValue().get("test");//setex方法 设置过期时间,单位为秒redisTemplate.opsForValue().set("test","123",5, TimeUnit.SECONDS);//setIfAbsent,只有在键不存在时才设置值,返回true表示成功设置了值,false表示没有设置redisTemplate.opsForValue().setIfAbsent("test1","123");redisTemplate.opsForValue().setIfAbsent("test1",2);}/*** 操作哈希类型的数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","tom");hashOperations.put("100","age","20");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100");System.out.println(keys);List values = hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}/*** 操作列表类型的数据*/@Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();//lpush命令向列表左侧插入元素,rpush命令向列表右侧插入元素listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");//lrange命令获取列表中指定区间的元素,0表示第一个元素,-1表示最后一个元素List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);//rpop命令从列表右侧弹出元素listOperations.rightPop("mylist");//llen命令获取列表的长度Long size = listOperations.size("mylist");System.out.println(size);}/*** 操作集合类型的数据*/@Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();//sadd命令向集合中添加元素,smember命令获取集合中的所有元素setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");Set members = setOperations.members("set1");System.out.println(members);//scard命令获取集合中元素的数量Long size = setOperations.size("set1");System.out.println(size);// sinter命令获取两个集合的交集,sunion命令获取两个集合的并集Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);// sunion命令获取两个集合的并集Set union = setOperations.union("set1", "set2");System.out.println(union);// srem 命令从 集合中移除指定的元素。setOperations.remove("set1","a","b");}/*** 操作有序集合类型的数据*/@Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();//zadd 命令像有序集合中添加元素, zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);//zrange命令获取有序集合中指定区间的元素,0表示第一个元素,-1表示最后一个元素zSetOperations.range("zset1",0,-1);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);// zincrby命令为有序集合中的元素增加指定的分数值,并返回增加后的分数值zSetOperations.incrementScore("zset1","c",10);//zrem命令从有序集合中移除指定的元素zSetOperations.remove("zset1","a","b");}/*** 通用命令操作*/@Testpublic void testCommon(){//keys exists type del//keys命令获取所有键,exists命令判断指定的键是否存在,type命令获取指定键的数据类型,del命令删除指定的键Set keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}

批注:测试之前启动redis,本地启动名命令:按Win + R键,输入cmd,然后按回车键。启动Redis服务器:输入以下命令来启动Redis服务器:redis-server。启动Redis客户端:在另一个命令提示符窗口中输入以下命令来启动Redis客户端:redis-cli

实在不行就去redis安装目录中找图片中的一项双击运行。在这里插入图片描述

http://www.xdnf.cn/news/18912.html

相关文章:

  • 将盾CDN:高防CDN和游戏盾有什么区别?
  • 【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题
  • SQL每日一练
  • 盲盒经济新风口:盲盒抽谷机小程序系统开发全解析
  • 深度学习-----《PyTorch神经网络高效训练与测试:优化器对比、激活函数优化及实战技巧》
  • Telematics Control Unit(TCU)的系统化梳理
  • 数据结构:红黑树(Red-Black Tree)
  • git开发基础流程
  • Springboot应用如何与SkyWalking集成,并使用Docker进行发布
  • Python爬虫实战:研究amazon-scrapy,构建亚马逊电商数据采集和分析系统
  • 扣子智能体商业化卡在哪?井云系统自动化交易+私域管理,闭环成交全流程拆解
  • 小程序开发指南(四)(UI 框架整合)
  • 机器视觉的3C玻璃盖板丝印应用
  • three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题
  • 如何在IDEA中使用Git
  • MyBatis-Plus 快速入门 -常用注解
  • 使用阿里云实现短信注册
  • SAVITECH盛微先进SAVIAUDIO音频解码芯片方案与应用
  • ValueTask 实战指南:解锁 .NET 异步编程的性能秘密
  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • 【P2P】P2P主要技术及RELAY服务实现
  • mac设置鼠标滚轮方向
  • 让清洁更智能,让城市更美好
  • 20、DMA----释放CPU压力,加快传输
  • 无人机航拍数据集|第30期 无人机腰果成熟度目标检测YOLO数据集3098张yolov11/yolov8/yolov5可训练
  • Day8--HOT100--160. 相交链表,206. 反转链表,234. 回文链表,876. 链表的中间结点
  • 艾利特石油管道巡检机器人:工业安全的智能守护者
  • 高通平台wifi--p2p issue
  • leetcode 17.04 消失的数字
  • 理解Vuex的辅助函数,分析mapState、mapGetters、mapMutations和mapActions各个应用场景