Redis 五种数据类型及其应用场景

 

Redis 数据都是 k-v 模型,本身就是hashmap 一种形式,器丰富的数据类型,应该场景特别多。

Redis 可使用redis-cli:help @string 查看方法

一,string 

  1, 简单的 key : value 

  2,计数器:设置数值时,incr 加1 ,decr 减1。数值计算

  3,二进制位计算:统计用户 登录天数 1 0 0 1 1 0(登录四天)。365 就是365 个二进制位。

  

  用户A: setbit 202001 9 1 
  用户A 第八天登录设置

  用户A:setbit 202002 265 1

  用户A 第264天登录

  用户B: setbit 20200101 8 1

  用户B 第七天登录设置

  使用场景:缓存k-v、session、文件系统fs(小文件 项目中频繁 IO 特别快)、计数器、统计注册数、活跃数等等

二、list

  lpush 添加的数据 a b c d e lrange 0 -1 得到是 e d c b a

 

  1,list 同向 lpush lpop, rpush lpop(先进后出)  模仿 栈行为

  2, list 异向 lpush rpop (先进先出) 模仿队列

  3,lindex key 1  模仿数组

  4,lstrm 可以优化Reids 内存量。可以只返回部分数据,全量数据可以到MySQL查询,因为不是大部分用户查看全量数据

  使用场景:消息队列,评论列表,替代编程语言容器,模仿栈,队列、数组。

 

三、hash 

  如果没有hash:

        set  sean::name tom

        set  sean::age 18

  但是 使用hash:

        hset sean name tom

        hset sean age  18

  就会发现 key 变少了,只有sean 了,只需要 hgetall sean 就可以拿到所有数据,hkeys sean 拿到所有key, hvals sean 拿到所有数据

  hash 可以理解为一个hashmap

  hashmap : redis 的 key-value 就是hashmap ---> hash_table

  使用场景:集聚数据(页面来自很多表的时候,并且数据变化不频繁),详情页,用户详情

 

四、set

    特点:无序且不重复

  应该场景:抽奖,验证码,扑克牌

    

五、zset

   特点:有序且不重复

   应用场景:排行榜、评论:(无序、分页)

   主要实现:skiplist

posted @ 2020-05-09 17:03  #随风飘散  阅读(305)  评论(0编辑  收藏  举报