免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

七 SpringBoot - Redis 緩存( 三 )

2.3.4 修改值 (出現(xiàn)錯(cuò)誤)//程序中,基于SpringBoot框架自動配置的redisTemplate,操作redis緩存,存在問題//場景:對班級人數(shù)進(jìn)行增減操作,比如將班級人數(shù),增加10log.info("------ 基于SpringBoot框架自動配置的redisTemplate 操作數(shù)據(jù) ------");redisTemplate.opsForValue().increment("student_num",10);//直接報(bào)錯(cuò),會報(bào)500異常: redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range//原因,通過系統(tǒng)默認(rèn)的 redisTemplate,存放key和value值時(shí),會自動使用Object類的序列化和反序列化,導(dǎo)致redis中真實(shí)存放的數(shù)據(jù)不是原始值,而是序列化后的值數(shù)據(jù)結(jié)果:

七 SpringBoot - Redis 緩存

文章插圖
2.4 自定義redisTemplate2.4.1 fastjson 依賴<dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson</artifactId>    <version>1.2.62</version></dependency>2.4.2  自定義redisTemplate 配置類//Redis自定義配置類,實(shí)現(xiàn)一個(gè)自定義序列化方式的 redisTemplate,提緩緩掉默認(rèn)自動配置的 redisTemplate,實(shí)現(xiàn)String類型任意類型的value@Configurationpublic class RedisConfig {    @Bean    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {        // 自定義redisTemplate的模板對象        RedisTemplate<String, Object> template = new RedisTemplate<>();        // 設(shè)置連接工廠        template.setConnectionFactory(redisConnectionFactory);        //由于要通過程序操作遠(yuǎn)程的redis數(shù)據(jù)庫,必須支持序列化,才可以讓程序中的數(shù)據(jù),在網(wǎng)絡(luò)中傳輸        //定義String類型的序列化方式        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();        // 定義fastjson序列化方式,可以序列化任何對象        FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);        // 需改為新的序列化方式        template.setKeySerializer(stringRedisSerializer);        template.setValueSerializer(fastJsonRedisSerializer);        template.setHashKeySerializer(stringRedisSerializer);        template.setHashValueSerializer(fastJsonRedisSerializer);        // 初始化為新的模板        template.afterPropertiesSet();        return template;    }}2.4.3 使用自定義redisTemplate 重新操作數(shù)據(jù)//自動裝配自定義 redisTemplate@Autowiredprivate RedisTemplate<String,Object> redisTemplate;//其他代碼不變操作結(jié)果:
七 SpringBoot - Redis 緩存

文章插圖
2.5 自定義redisUtils工具類2.5.1 自定義redisUtils工具類--->RedisUtil 工具類
2.5.2 使用自定義redisTemplate和redisUtils工具類@GetMapping("/testRedisUtils")public String testSpringBootRedisUtils(){    //基于自定義的redisTemplate 和 RedisUtils 工具類,操作redis緩存    //程序中,添加數(shù)據(jù)據(jù)到redis    log.info("------ 基于自定義的redisTemplate 和 RedisUtils 工具類 添加數(shù)據(jù) ------");    redisUtils.set("kh96_class_name_utils","KGC_KH96");    redisUtils.set("student_num_utils",19);    //程序中,從redis獲取數(shù)據(jù)    log.info("------ 基于自定義的redisTemplate 和 RedisUtils 工具類 獲取數(shù)據(jù) ------");    log.info("****** 根據(jù) 班級的key:{},獲取班級名稱:{} ******","kh96_class_name_utils",redisUtils.get("kh96_class_name_utils"));    log.info("****** 根據(jù) 班級的key:{},獲取班級人數(shù):{} ******","student_num_utils",redisUtils.get("student_num_utils"));    //程序中,基于SpringBoot框架自動配置的redisTemplate,操作redis緩存    //場景:對班級人數(shù)進(jìn)行增減操作,比如姜班級人數(shù),增加10    log.info("------ 基于自定義的redisTemplate 和 RedisUtils 工具類 操作數(shù)據(jù) ------");    redisUtils.incr("student_num_utils",10);    return "工具類 RedisUtils  操作 redis 成功!";}

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀