Redis的8个基础类型

1.String


  特点:非常常用的数据类型,String能表达3种值的类型:字符串、整数、浮点数 100.01 是个六位的串


  应用场景:



     1、key和命令是字符串



     2、普通的赋值



     3、incr用于乐观锁



      incr:递增数字,可用于实现乐观锁 watch(事务)



       4、setnx用于分布式锁


2.list列表


  特点:list列表类型可以存储有序、可重复的元素


          获取头部或尾部附近的记录是极快的


          list的元素个数最多为2^32-1个(40亿)


  应用场景:作为栈或队列使用,可用于各种列表,比如用户列表、商品列表、评论列表等。


3.set集合


   特点:无序、唯一元素


            集合中最大的成员数为 2^32 - 1


   应用场景:适用于不能重复的且不需要顺序的数据结构 .比如:关注的用户,还可以通过spop进行随机抽奖


4.sortedset简称Zset


   特点:SortedSet(ZSet) 有序集合: 元素本身是无序不重复的


           每个元素关联一个分数(score)


           可按分数排序,分数可重复


   应用场景:由于可以按照分值排序,所以适用于各种排行榜。比如:点击排行榜、销量排行榜、关注排行榜等。


5.hash类型


   特点:Redis hash 是一个 string 类型的 field 和 value 的映射表,它提供了字段和字段值的映射。


           每个 hash 可以存储 2^32 - 1 键值对(40多亿)。


   应用场景:对象的存储 ,表数据的映射  


6.bitmap位图类型


   特点:bitmap是进行位操作的


           通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。


           bitmap本身会极大的节省储存空间。


  应用场景:1、用户每月签到,用户id为key , 日期作为偏移量 1表示签到


                  2、统计活跃用户, 日期为key,用户id为偏移量 1表示活跃


                  3、查询用户在线状态, 日期为key,用户id为偏移量 1表示在线


7.geo地理位置类型


Z阶曲线、Base32编码和


           geohash算法


    Z阶曲线:在x轴和y轴上将十进制数转化为二进制数,采用x轴和y轴对应的二进制数依次交叉后得到一个六位数编


                   码。把数字从小到大依次连起来的曲线称为Z阶曲线,Z阶曲线是把多维转换成一维的一种方法。


   应用场景:1、记录地理位置


                   2、计算距离


                   3、查找"附近的人"


8.stream数据流类型

   特点:stream是Redis5.0后新增的数据结构,用于可持久化的消息队列。

         几乎满足了消息队列具备的全部内容,包括:

  • 消息ID的序列化生成
  • 消息遍历
  • 消息的阻塞和非阻塞读取
  • 消息的分组消费
  • 未完成消息的处理
  • 消息队列监控

每个Stream都有唯一的名称,它就是Redis的key,首次使用 xadd 指令追加消息时自动创建。

    应用场景:消息队列