SpringBoot(redis使用篇)

张开发
2026/5/22 7:09:25 15 分钟阅读
SpringBoot(redis使用篇)
SpringBootredis使用篇启动redis在redis的src的目录下执行./redis-server ../redis.conf命令redis命令和概论篇链接在最下方引入依赖这里还有测试类的依赖后续用test测试dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId version3.2.8/version /dependency配置 Redisapplication.yaml中配置# Redis配置 spring: redis: host: 127.0.0.1 # 配置服务器地址这里是Linux中开启的redis如果是本机改成本机 port: 6380 # 配置redis端⼝号 #可省略 jedis: # 连接池配置 pool: max-active: 10 # 最⼤活动连接 min-idle: 2 # 最⼩空闲连接 max-idle: 5 # 最⼤空闲连接 max-wait: 1000 # 最⼤等待时间Redis在SpringBoot的实现String类型创建一个StringApp.java类存放数据import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; ​ import java.util.concurrent.TimeUnit; ​ Slf4j SpringBootTest public class StringApp { //1.引入模版类 Resource private StringRedisTemplate stringRedisTemplate; ​ //1.存放 Test public void a(){ //2.产生对string容器操作的类 ValueOperationsString, String forValue stringRedisTemplate.opsForValue(); forValue.set(A,aa); forValue.set(B,bb); forValue.set(C,1); forValue.set(D,dd); forValue.set(E,ee); forValue.set(A,aa2); //存在就覆盖不存在就没有效果 forValue.setIfPresent(B,bb2); forValue.setIfPresent(F,ff); //存在没有效果不存在就添加 forValue.setIfAbsent(D,dd2); forValue.setIfAbsent(G,gg); forValue.set(H,hh,1, TimeUnit.DAYS); } }获取数据//后续代码都得放在StringApp类中 //2.获取 Test public void b(){ ValueOperationsString, String forValue stringRedisTemplate.opsForValue(); String a forValue.get(A); String i forValue.get(I); log.info(a{},i{},a,i); String d forValue.getAndSet(D, dd2); log.info(d{},d); String g forValue.getAndDelete(G); log.info(g{},g); String b forValue.getAndExpire(B, 2, TimeUnit.HOURS); log.info(b{},b); }其他操作Test public void c(){ ValueOperationsString, String forValue stringRedisTemplate.opsForValue(); stringRedisTemplate.delete(D); forValue.increment(C,3);//3 forValue.increment(C);//1 forValue.decrement(C);//-1 forValue.decrement(C,2);//-2 forValue.append(A,13243); ​ }Hash类型创建一个HashApp.java类存放数据import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; ​ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; ​ Slf4j SpringBootTest public class HashApp { Resource private StringRedisTemplate stringRedisTemplate; Test public void a(){ HashOperationsString, Object, Object forHash stringRedisTemplate.opsForHash(); forHash.put(A,a,aa); forHash.put(A,b,bb); forHash.put(A,c,1); forHash.put(A,d,1.6); HashMapObject, Object map new HashMap(); map.put(e,ee); map.put(f,ff); map.put(g,gg); forHash.putAll(A,map); //存在没效果不存在就添加 forHash.putIfAbsent(A,b,bb2); forHash.putIfAbsent(A,h,hh); ​ } }获取数据Test public void b(){ HashOperationsString, Object, Object forHash stringRedisTemplate.opsForHash(); //获取到所有内容 MapObject, Object all forHash.entries(A); log.info(all{},all); //获取到某一个 Object c forHash.get(A, c); Object a forHash.get(A, a); Object m forHash.get(A, m); log.info(c:{},a:{},m:{},c,a,m); //获取到所以的key SetObject keys forHash.keys(A); //获取到所以值 ListObject values forHash.values(A); log.info(keys:{},keys); log.info(values:{},values); //随机获取一个key Object randomKey forHash.randomKey(A); //随机获取多个key ListObject randomKeys forHash.randomKeys(A, 3); log.info(randomKey:{},randomKey); log.info(randomKeys:{},randomKeys); //随机获取一个k-v Map.EntryObject, Object randomEntry forHash.randomEntry(A); log.info(randomEntry:{},randomEntry); MapObject, Object randomEntries forHash.randomEntries(A, 2); log.info(randomEntries:{},randomEntries); }其他操作Test public void c(){ HashOperationsString, Object, Object forHash stringRedisTemplate.opsForHash(); //删除指定的key forHash.delete(A,e,m); //判断是否存在这个key Boolean hasKey forHash.hasKey(A, a); log.info(haKey:{},hasKey); //数值运算 forHash.increment(A,c,1); forHash.increment(A,c,-6); forHash.increment(A,d,1.7); ​ }List类型创建一个ListApp.java类存放数据import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.StringRedisTemplate; ​ import java.util.List; ​ SpringBootTest Slf4j public class ListApp { Resource private StringRedisTemplate stringRedisTemplate; Test public void a(){ ListOperationsString, String forList stringRedisTemplate.opsForList(); forList.leftPush(A,aa); forList.leftPush(A,bb); forList.leftPush(A,cc); forList.leftPush(A,aa); forList.leftPush(A,dd); forList.leftPush(A,ee); forList.leftPushAll(A,ff,gg,hh); forList.rightPush(A,11); forList.rightPush(A,22); forList.rightPush(A,33); forList.rightPushAll(A,44,55,66); ​ } }获取数据Test public void b(){ ListOperationsString, String forList stringRedisTemplate.opsForList(); //全取 ListString all forList.range(A, 0, -1); log.info(all:{},all); ListString list1 forList.range(A, 2, 7); log.info(list1:{},list1); String a4 forList.index(A, 4); log.info(a4:{},a4); }删除数据Test public void c(){ ListOperationsString, String forList stringRedisTemplate.opsForList(); //如何删除 forList.remove(A,7,dd); //删除栈顶 String leftPop forList.leftPop(A); ListString leftPops forList.leftPop(A, 3); log.info(leftPop:{},leftPop); log.info(leftPops:{},leftPops); //删除栈尾 String rightPop forList.rightPop(A); ListString rightPops forList.rightPop(A, 2); log.info(rightPop:{},rightPop); log.info(rightPops:{},rightPops); }其他操作Test public void d(){ ListOperationsString, String forList stringRedisTemplate.opsForList(); Long size forList.size(A); log.info(size:{},size); //判断是否存在 不存在返回-1 Long indexOfA forList.indexOf(A, aa); log.info(indexOfA:{},indexOfA); Long indexOfF forList.indexOf(A, ff); log.info(indexOfF:{},indexOfF); //修改制定索引的内容 forList.set(A,3,kk); //截取集合 forList.trim(A,1,3); ListString range forList.range(A, 0, -1); log.info(range:{},range); }Set类型创建一个SetApp.java类存放数据import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.SetOperations; import org.springframework.data.redis.core.StringRedisTemplate; ​ import java.util.List; import java.util.Set; ​ Slf4jSpringBootTest public class SetApp { Resource private StringRedisTemplate stringRedisTemplate; ​ Test public void a(){ SetOperationsString, String forSet stringRedisTemplate.opsForSet(); forSet.add(A,aa); forSet.add(A,bb,cc,dd,aa,11,22); } }获取数据Test public void b(){ SetOperationsString, String forSet stringRedisTemplate.opsForSet(); //获取所有数据 SetString members forSet.members(A); log.info(members:{},members); //获取随机的一个元素 String randomMember forSet.randomMember(A); log.info(randomMember:{},randomMember); ListString a forSet.randomMembers(A, 3); SetString a1 forSet.distinctRandomMembers(A, 3); log.info(a:{},a); log.info(a1:{},a1); ​ }删除数据Test public void c(){ SetOperationsString, String forSet stringRedisTemplate.opsForSet(); Long size forSet.size(A); log.info(size:{},size); Boolean member forSet.isMember(A, aa); log.info(member:{},member); //获取并删除 String pop forSet.pop(A); log.info(pop:{},pop); ​ }其他操作Test public void d(){ // 1. 获取Redis中Set集合的操作对象专门用于操作String类型的Set SetOperationsString, String forSet stringRedisTemplate.opsForSet(); ​ // 2. 向key为B的Redis Set集合中添加元素aa、bb、cc、dd forSet.add(B,aa,bb,cc,dd); ​ // 3. 向key为C的Redis Set集合中添加元素aa、mm、kk、cc、11 forSet.add(C,aa,mm,kk,cc,11); ​ // 4. 计算两个Set集合的【并集】B ∪ C包含B和C所有元素去重 SetString union forSet.union(B, C); log.info(并集union:{},union); ​ // 5. 计算两个Set集合的【差集】B - C只在B中存在、不在C中存在的元素 SetString difference forSet.difference(B, C); log.info(差集difference:{},difference); ​ // 6. 计算两个Set集合的【交集】B ∩ C同时存在于B和C中的元素 SetString intersect forSet.intersect(B, C); log.info(交集intersect:{},intersect); }ZSet类型创建一个ZSetApp.java类存放数据import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; ​ import java.util.List; import java.util.Set; ​ Slf4j SpringBootTest public class ZSetApp { Resource private StringRedisTemplate stringRedisTemplate; Test public void a(){ ZSetOperationsString, String forZSet stringRedisTemplate.opsForZSet(); forZSet.add(A,aa,1.1); forZSet.add(A,bb,1.6); forZSet.add(A,cc,1.3); forZSet.add(A,aa,1.5); } }获取数据Test public void b(){ ZSetOperationsString, String forZSet stringRedisTemplate.opsForZSet(); // 获取ZSet操作对象 String randomMember forZSet.randomMember(A); // 随机获取1个A集合的元素 log.info(range:{},randomMember); // 打印单个随机元素 SetString range forZSet.range(A, 0, -1); // 查询A集合所有元素 log.info(range:{},range); // 打印全部元素 ListString randomMembers forZSet.randomMembers(A, 3); // 随机获取3个A集合的元素 log.info(randomMembers:{},randomMembers); // 打印多个随机元素 }其他操作Test public void c() { ZSetOperationsString, String forZSet stringRedisTemplate.opsForZSet(); // 获取ZSet操作对象 forZSet.remove(A, aa, kk); // 从keyA的ZSet中移除元素aa、kk Long size forZSet.size(A); // 获取keyA的ZSet元素总数 log.info(size:{}, size); // 打印元素数量 ​ forZSet.add(B, aa, 1.1); // 向B添加元素aa分数1.1 forZSet.add(B, bb, 1.2); // 向B添加元素bb分数1.2 forZSet.add(B, cc, 1.3); // 向B添加元素cc分数1.3 forZSet.add(B, dd, 1.4); // 向B添加元素dd分数1.4 ​ forZSet.add(C, bb, 2.2); // 向C添加元素bb分数2.2 forZSet.add(C, 33, 2.3); // 向C添加元素33分数2.3 forZSet.add(C, dd, 2.4); // 向C添加元素dd分数2.4 ​ SetString union forZSet.union(B, C); // 计算B、C的并集 log.info(union:{}, union); // 打印并集 SetString difference forZSet.difference(B, C); // 计算B、C的差集 log.info(difference:{}, difference); // 打印差集 SetString intersect forZSet.intersect(B, C); // 计算B、C的交集 log.info(intersect:{}, intersect); // 打印交集 }案例导入Redis和mysql等需要依赖dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-spring-boot3-starter/artifactId version3.5.12/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency !--对象和JSON字符串相互转换-- dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version2.0.32/version /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId /dependency /dependencies配置文件application.yml文件的书写spring: data: redis: host: 192.168.126.66 #自己的虚拟机端口号 port: 6379 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/jiazhong_2025 #自己的数据库 username: root #数据库账号 password: xxxxxx #数据库密码 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl其次书写自己的bean和mapperimport com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; import lombok.NoArgsConstructor; ​ import java.io.Serializable; ​ Data NoArgsConstructor public class Student implements Serializable { TableId(value id) private Long id; private String name; private String stuNo; private String password; private Character gender; private String birthday; private String placeOfOrigin; private String enrollmentDate; private Long schoolId; private Long courseId; TableLogic(delval 1, value 0) private Integer state; private String createTime; private String updateTime; }import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jiazhong.mingxing.boot.boot05.bean.Student; import org.apache.ibatis.annotations.Mapper; ​ Mapper public interface StudentMapper extends BaseMapperStudent { }书写serice用接口实现的方法import com.baomidou.mybatisplus.extension.service.IService; import com.jiazhong.mingxing.boot.boot05.bean.Student; import org.springframework.stereotype.Service; ​ import java.util.List; ​ Service public interface StudentService extends IServiceStudent { Student findStudentById(String id); ListStudent findAll1(); }import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jiazhong.mingxing.boot.boot05.bean.Student; import com.jiazhong.mingxing.boot.boot05.mapper.StudentMapper; import com.jiazhong.mingxing.boot.boot05.service.StudentService; import lombok.extern.slf4j.Slf4j; ​ import org.json.JSONString; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; ​ import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; ​ Service Slf4j ​ public class StudentServiceImpl extends ServiceImplStudentMapper, Student implements StudentService { private StringRedisTemplate stringRedisTemplate; private StudentMapper studentMapper; private ValueOperationsString,String forValue; private ListOperationsString,String forList; Autowired public StudentServiceImpl(StringRedisTemplate stringRedisTemplate, StudentMapper studentMapper) { this.stringRedisTemplate stringRedisTemplate; this.studentMapper studentMapper; this.forValue stringRedisTemplate.opsForValue(); this.forList stringRedisTemplate.opsForList(); } Override public ListStudent findAll1() { //1.从redis中获取 String json forValue.get(ALL_STUDENT); //2.如果存在返回该数据 if (json ! null){ return JSONArray.parseArray(json, Student.class); } //3.如果不存在链接数据库 ListStudent all_students this.list(); //4.将数据存放到redis中 String jsonString JSONArray.toJSONString(all_students); forValue.set(ALL_STUDENT,jsonString,1, TimeUnit.HOURS); //5.返回数据 return all_students; } }redis学习概论、命令、雪崩等理解篇链接https://blog.csdn.net/2401_83310208/article/details/159685920?spm1001.2014.3001.5501

更多文章