SpringBoot Redis篇 (三)

                               本篇文章为大家介绍SpringBoot整合Redis


一、Redis简介

       Redis是一个高性能的key-value数据库。它支持存储的value类型很多,包括String(字符串)、List(列表)、Set(集合)、Sorted-Set(有序集合)和Hash(哈希类型)。

     数据类型                                                                                      概述
String(字符串类型)

   字符串是最基本的Redis值。Redis字符串是二进制安全的,这意味着Redis字符串可以包含任何类型的数据,例如JPEG图像或JSON字符串。

List(列表类型)

   在List的头端或者尾端做百万次的插入和删除操作,也能保持稳定的很少的时间消耗。在List的两端访问元素是非常快的,但是如果要访问一个很大的List中的中间部分的元素就会比较慢了,时间复杂度是O(N)。

Set(集合类型)

   Set的一个重要特性是不允许重复元素。向集合中添加多次相同的元素,集合中只存在一个该元素。在实际应用中,这意味着在添加一个元素前不需要先检查元素是否存在。

Hash哈希类型

   Hash保存String域和String值之间的映射,所以它们是用来表示对象的数据类型。

其存储方式占用很小的空间,所以在一个小的Redis实例中就可以存储上百万的这种对象。

Sorted-Set(有序集合类型)

   Redis有序集合类型与Redis的集合类型类似,是非重复的String元素的集合。不同之处在于,有序集合中的每个成员都关联一个Score,Score是在排序时候使用的,按照Score的值从小到大进行排序。集合中每个元素是唯一的,但Score有可能重复。


二、Redis优点

     1)Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。

     2)支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。

    3)操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。

    4)多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。


三、springboot集成Redis

   1) 添加pom.xml文件

       

    2) 添加配置文件

        

  3) 在UserServiceImpl 类中向Redis添加操作

      

  4) 使用RedisTempate类

     

 5) UserController类

    

6) 测试结果

   


四、RedisTemplate类

     1)RedisTemplate中定义了对5种数据结构操作:

                     //操作字符串

             redisTemplate.opsForValue();

                    //操作hash

            redisTemplate.opsForHash();

                   //操作list

           redisTemplate.opsForList();

                  //操作set

           redisTemplate.opsForSet();

                 //操作有序set

           redisTemplate.opsForZSet();  

     2)其他方法请参考官方Api:

          https://docs.huihoo.com/javadoc/spring/spring-data/redis/1.0/org/springframework/data/redis/core/RedisTemplate.html

     3)StringRedisTemplate与RedisTemplate区别?

     


五、常见问题

     1)RedisTemplate数据存储产生的序列化问题?

         通过RedisTemplateopsForValueset方法把数据存入缓存,在Redis客户端取不出数据。

         存入客户端的的数据为:

         

          数据已经被序列化

         RedisTemplateset值时会先调用序列化器将键和值都序列化byte字节数组放入Redis数据库中,在客户端除非get后的key为“user_key_1”使用同样的序列化器,进行取值,否则取不到值。原因是ReidsTemplate使用的默认的序列化方式有问题。

        

  2)解决方法:

       新增RedisSerializeConfig类。

      


六、源码demo

         https://github.com/xiaonongOne/SpringBoot_Redis

         最后欢迎大家关注微信公众号。

        

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值