springboot中操作redis的步骤到完全实践
作者:GG Bond @
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: localhost port: 6379 password: 123456 database: 10
解释说明:
database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。
可以通过修改Redis配置文件来指定数据库的数量。
3,编写配置类,创建RedisTemplate对象、
@Configuration @Slf4j public class RedisConfiguration { @Bean public 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 { @Autowired private RedisTemplate redisTemplate; @Test public 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种数据类型进行操作。
@Autowired private RedisTemplate redisTemplate; /* * 测试String类型数据 * */ @Test public void testString(){ //string类型的数据操作方法,对应的Redis操作命令为set和get //set,get,setex,setnx redisTemplate.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); } /** * 操作哈希类型的数据 */ @Test public void testHash(){ //hset hget hdel hkeys hvals HashOperations 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"); } /** * 操作列表类型的数据 */ @Test public void testList(){ //lpush lrange rpop llen ListOperations 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); } /** * 操作集合类型的数据 */ @Test public void testSet(){ //sadd smembers scard sinter sunion srem SetOperations 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"); } /** * 操作有序集合类型的数据 */ @Test public void testZset(){ //zadd zrange zincrby zrem ZSetOperations 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"); } /** * 通用命令操作 */ @Test public 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安装目录中找图片中的一项双击运行。
到此这篇关于SpringBoot 常用跨域处理方案的文章就介绍到这了,更多相关SpringBoot 跨域处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!