springboot2.7 redis配置与操作
参考地址:https://www.codenong.com/cs107128098/
一、pom.xml中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.7.0</version>
</dependency>
二、application.properties 配置
spring.redis.host=172.16.3.122 spring.redis.port=6379 spring.redis.database=0 spring.redis.password=password
三、解决springboot插入数据后客户端软件查看乱码问题
添加配置文件:RedisConfig
package com.example.demo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * 加该配置的作用在于解决springboot存入redis后产生乱码问题 * Redis默认序列化规则导致的。RedisTemplate默认的所有序列化规则都是JDKSerializer,而StringRedisTemplate默认的序列化规则是StringRedisSerializer。 */ @Configuration public class RedisConfig { @Bean RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); // 设置值(value)的序列化采用Jackson2JsonRedisSerializer。 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // 设置键(key)的序列化采用StringRedisSerializer。 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
四、springboot 操作redis
首先在类中注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
1、字符串操作
redisTemplate.boundValueOps(“name”).set(“itcast”); // 取值 String str = (String) redisTemplate.boundValueOps(“name”).get();
2、set类型操作
//存入值 redisTemplate.boundSetOps(“nameset”).add(“曹操”); redisTemplate.boundSetOps(“nameset”).add(“刘备”); redisTemplate.boundSetOps(“nameset”).add(“孙权”); //提取值 Set members = redisTemplate.boundSetOps(“nameset”).members(); //set类型取出的值没有顺序 //删除集合中的某一个值 redisTemplate.boundSetOps(“nameset”).remove(“孙权”); //删除整个集合 redisTemplate.delete(“nameset”);
3、list类型操作
//右压栈:后添加的对象排在后边 redisTemplate.boundListOps(“namelist1”).rightPush(“刘备”); redisTemplate.boundListOps(“namelist1”).rightPush(“关羽”); redisTemplate.boundListOps(“namelist1”).rightPush(“张飞”); //显示右压栈集合 List list = redisTemplate.boundListOps(“namelist1”).range(0, 10); /*获取索引为0-10的元素,如果要获取集合中所有的元素,则使用range(0,-1) 运行结果: [刘备, 关羽, 张飞] */ //左压栈:后添加的对象排在前边 redisTemplate.boundListOps(“namelist2”).leftPush(“刘备”); redisTemplate.boundListOps(“namelist2”).leftPush(“关羽”); redisTemplate.boundListOps(“namelist2”).leftPush(“张飞”); //显示左压栈集合 List list = redisTemplate.boundListOps(“namelist2”).range(0, 10); /*运行结果: [张飞, 关羽, 刘备] */ //查询集合某个元素 String s = (String)redisTemplate.boundListOps(“namelist1”).index(1); //移除集合某个元素 redisTemplate.boundListOps(“namelist1”).remove(1, “关羽”); //按顺序移除集合中的一个"关羽"
4、Hash类操作
//存入值 redisTemplate.boundHashOps(“namehash”).put(“a”, “唐僧”); redisTemplate.boundHashOps(“namehash”).put(“b”, “悟空”); redisTemplate.boundHashOps(“namehash”).put(“c”, “八戒”); redisTemplate.boundHashOps(“namehash”).put(“d”, “沙僧”); //提取所有的KEY Set s = redisTemplate.boundHashOps(“namehash”).keys(); /*运行结果: [a, b, c, d] */ //提取所有的值 List values = redisTemplate.boundHashOps(“namehash”).values(); /* 运行结果: [唐僧, 悟空, 八戒, 沙僧] */ //根据KEY提取值 Object object = redisTemplate.boundHashOps(“namehash”).get(“b”); /* 运行结果: 悟空 */ //根据KEY移除值 redisTemplate.boundHashOps(“namehash”).delete(“c”);
5、ZSet类型操作
//存值 ,指定分值 redisTemplate.boundZSetOps(“namezset”).add(“曹操”,100000); redisTemplate.boundZSetOps(“namezset”).add(“孙权”,0); redisTemplate.boundZSetOps(“namezset”).add(“刘备”,1000); //查询,由低到高 //由低到高排序 Set namezset = redisTemplate.boundZSetOps(“namezset”).range(0,‐1); //查询,由高到低,土豪榜前10 //由高到底排序(土豪榜) Set namezset =redisTemplate.boundZSetOps(“namezset”).reverseRange(0,9); //增加分数 redisTemplate.boundZSetOps(“namezset”).incrementScore(“孙权”,2000); //查询值和分数 Set namezset = redisTemplate.boundZSetOps(“namezset”).reverseRangeWithScores(0, ‐1); for(ZSetOperations.TypedTuple typedTuple:namezset){ System.out.print(“姓名:”+typedTuple.getValue()); System.out.println(“金币:”+typedTuple.getScore()); }
过期时间设置
//存值 redisTemplate.boundValueOps(“name”).set(“itcast”); //设置过期时间 redisTemplate.boundValueOps(“name”).expire(10,TimeUnit.SECONDS);
博客里大都是转载的内容,其目的主要用户知识的组织和管理。

浙公网安备 33010602011771号