日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合Redis

發布時間:2023/12/9 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、添加依賴

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> </dependencies>

二、項目的目錄結構:

?三、一個ssm_book表格

?四、配置文件application.yml

server:servlet:context-path: /redisport: 8080spring:redis:host: 127.0.0.1port: 6379jedis:pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0timeout: 1200datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mvc?serverTimezone=UTCusername: rootpassword: 123456mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

五、配置redistemplate序列化

@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport {/*選擇redis作為默認緩存工具*/@Beanpublic CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1));//設置緩存有效期1小時return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)).cacheDefaults(redisCacheConfiguration).build();}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);//配置連接工廠//使用Jackson2JsonRedisSerializer來序列化和反序列化redis的value值(默認使用JDK的序列化方式)Jackson2JsonRedisSerializer jsonSerial = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();//指定要序列化的域、field、get和set,以及修飾符范圍,ANY是都有(包括private和public)om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//指定序列化輸入的類型,類必須是非final修飾的,final修飾符的(比如String、Integer等會拋出異常)om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);jsonSerial.setObjectMapper(om);//值采用json序列化template.setValueSerializer(jsonSerial);//使用StringRedisSerializer來序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());//設置hash、key和value序列化模式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(jsonSerial);template.afterPropertiesSet();return template;}//對hash類型的數據操作@Beanpublic HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {return redisTemplate.opsForHash();}//對redis字符串類型數據操作@Beanpublic ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {return redisTemplate.opsForValue();}//對鏈表類型的數據操作@Beanpublic ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {return redisTemplate.opsForList();}//對無序集合類型的數據操作@Beanpublic SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {return redisTemplate.opsForSet();}//對有序集合類型的數據操作@Beanpublic ZSetOperations<String, Object> zSetOperations(RedisTemplate redisTemplate) {return redisTemplate.opsForZSet();} }

六、創建實體類Book

@Data @ToString @TableName(value = "ssm_book") public class Book implements Serializable {@TableId(value = "book_id",type = IdType.AUTO)private Integer bookId;@TableField(value = "book_name")private String bookName;@TableField(value = "book_author")private String bookAuthor;@TableField(value = "book_date")private Date bookDate;@TableField(value = "book_price")private Double bookPrice; }

七、創建BookMapper

@Mapper public interface BookMapper extends BaseMapper<Book> { }

八、創建BookService

@Service public class BookService {@Autowiredprivate BookMapper bookMapper;@Autowiredprivate RedisTemplate redisTemplate;public List<Book> findAll(){while(redisTemplate.opsForList().size("books")>0){redisTemplate.opsForList().leftPop("books");}redisTemplate.opsForList().rightPushAll("books",bookMapper.selectList(null));return bookMapper.selectList(null);}//獲取book策略:先從緩存中獲取book,沒有則在數據庫中獲取,再將數據寫入緩存public Book findBookById(int id){String key = "book_"+id;ValueOperations<String,Book> operations = redisTemplate.opsForValue();//判斷redis中是否有鍵為key的緩存boolean hasKey = redisTemplate.hasKey(key);if(hasKey){Book book = operations.get(key);System.out.println("從緩存中獲得數據:"+book.getBookName());System.out.println("-----------------------------------");return book;}else{Book book = bookMapper.selectById(id);System.out.println("從數據庫中獲得數據:"+book.getBookName());System.out.println("-----------------------------------");//寫入緩存operations.set(key,book,5, TimeUnit.HOURS);return book;}}//更新圖書策略:先更新數據表,成功之后,刪除原來的緩存,再更新緩存public int updateBook(Book book){ValueOperations<String,Object> operations = redisTemplate.opsForValue();QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("book_id",book.getBookId());int result = bookMapper.update(book,queryWrapper);if(result !=0 ){String key = "book_"+book.getBookId();boolean haskey = redisTemplate.hasKey(key);if(haskey){redisTemplate.delete(key);System.out.println("刪除緩存中的key------------> "+key);}//再將更新后的數據加入緩存Book newbook = bookMapper.selectById(book.getBookId());if(newbook != null){operations.set(key,newbook,3,TimeUnit.HOURS);}}return result;}//刪除圖書策略:刪除數據表中的數據,然后刪除緩存public int deleteBookById(int id){int result = bookMapper.deleteById(id); //刪除數據庫中記錄String key = "book_"+id;if(result != 0){boolean hasKey = redisTemplate.hasKey(key); //查詢緩存是否存在對應的idif(hasKey){redisTemplate.delete(key);//刪除緩存中的數據System.out.println("刪除了緩存中的key:"+key);}}return result;} }

九、測試

@SpringBootTest class RedisdemoApplicationTests {@Autowiredprivate BookService bookService;@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void all(){List<Book> bookList = redisTemplate.opsForList().range("books",0,-1);System.out.println("緩存中數據:"+bookList.size());if(bookList.size()==0){System.out.println("=========緩存中沒有數據,直接到數據庫中查詢==========");bookList = bookService.findAll();}else{System.out.println("==============緩存中有數據了==============");bookList.forEach(book -> System.out.println(book));}}@Testpublic void selectById(){Book book = bookService.findBookById(52);System.out.println(book);}@Testpublic void update(){Book book = bookService.findBookById(57);book.setBookName("讀城記");book.setBookAuthor("易中天");book.setBookDate(new Date());book.setBookPrice(889.5);bookService.updateBook(book);}@Testpublic void del(){bookService.deleteBookById(13);} }

總結

以上是生活随笔為你收集整理的SpringBoot整合Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产看黄网站 | 国产在视频线精品视频 | 国产成人午夜高潮毛片 | 窝窝午夜理论片影院 | 男女插孔视频 | 夜夜躁狠狠躁日日躁 | 欧美另类精品xxxx孕妇 | 亚洲欧美一区二区三区四区五区 | 国产精品3| 国产成人三级在线播放 | 欧美一级黄色大片 | 国产精品一区二区入口九绯色 | 亚洲成人av免费观看 | 性五月天 | 97人妻精品一区二区三区动漫 | 国产美女视频网站 | 久久爱影视i | 国产天堂精品 | 久草成人在线视频 | 国产精品久久av无码一区二区 | 国产精品欧美激情在线 | 亚洲自拍第三页 | 欧美视频一二三 | 黄色的一级片 | 新97超碰 | 黄色小说视频网站 | 国产999视频 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 国产精品老牛影院99av | 美女久久| 国产成人精品一区二区三区在线观看 | 久久久精品日本 | 日本韩国欧美中文字幕 | 国产综合视频 | 成人黄色视屏 | 蜜桃传媒一区二区亚洲 | 最新的黄色网址 | 国产99久久久国产精品 | 国产对白在线 | 欧美老女人视频 | 久久丫精品忘忧草西安产品 | 日韩视频在线免费观看 | 精品一区二区三区国产 | yjizz视频 | 欧美大胆a视频 | 一区不卡在线观看 | 色窝窝无码一区二区三区成人网站 | 精品成人在线 | 日韩黄色a级片 | 日韩欧美高清dvd碟片 | 国产99在线 | 国产超碰人人模人人爽人人添 | 四季av在线一区二区三区 | 嫩草影院菊竹影院 | 欧美日韩国产一区二区在线观看 | 欧美亚洲国产精品 | 日本女优一区 | va视频在线观看 | 妺妺窝人体色www聚色窝仙踪 | 毛片基地免费 | 亚欧成人精品 | 日韩特级毛片 | 性网址| www.爆操 | 91www在线观看 | 少妇高潮一区二区三区在线 | 国产精品国产三级国产aⅴ下载 | 99激情视频 | 欧洲精品在线观看 | 国产不卡av在线 | 亚洲乱码在线 | 亚洲无色 | 亚洲伦理中文字幕 | 国产精品一级二级 | √资源天堂中文在线视频 | 成人你懂的 | 亚洲aaaaaa | 丁香综合激情 | 久久精品天堂 | 天天干天天操天天插 | 婷婷色网站 | 人人人妻人人澡人人爽欧美一区 | 亚洲成人av中文字幕 | 一品毛片| 亚洲你我色 | 亚洲欧洲免费视频 | 久久久久国产精品视频 | 91激情 | 国产91在线免费 | 九九色在线 | 国产精品va无码一区二区三区 | 人人爽人人爽人人 | 成人在线免费网址 | 国产精品国产三级国产普通话蜜臀 | youjizz视频| 最近中文字幕在线观看 | 日本亚洲最大的色成网站www | 久久久香蕉 | www.日本色 |