redis 五种数据类型的常用指令和应用场景

redis  五种 String   set   zset(sorted set) hash   list

String

二进制安全:序列化byte[]    没有类型概念,就没有溢出概念,所以通信的两端要定义好编解码 。具有同性质的还有zk,hbase,kafka

在redis 中 中文或者数值的长度和传输的时候和编码规则有关和java 不一样(<127 的数字占一个字节,> 127 的int 占4字节(32位)+- 2**31 )

String  三种   字符串      Get / set /  append / strlen(取字节长度)  [name]

                     数值          incr  decr 

                     二进制位   setbit / getbit offset(偏移量)  value

字符串 和 数值 应用场景:    session  kv 缓存,数值计算计数器,fs分布式文件系统(小文件 磁盘 io ) 内存

二进制 应用场景    :bitmap(索引优化,内存压榨,数据传输,类型判定)登录天数 ,活跃用户数or一下

指令:存放格式 0 0 0 0 0 0 0 0     

        指令setbit  k 1 1    存的就是01000000           取值的时候对应二进制的ascii 此处为64 对应为@  

        指令setbit  k 7 1    存为01000001                   取值为A

        指令setbit  k 9  1   01000001 ~01000000      取值为A@ strlen k=2      会自动扩展一个字节

         对于utf-8    0x00000080 - 0x000007FF:          0x00000800 - 0x0000FFFF:           下方xxx的部分去值当做索引       所以setbit  k 99999 1  ,strlen k  =12500
                             110xxxxx 10xxxxxx                       1110xxxx 10xxxxxx 10xxxxxx

      bitcount   key  start  end  计数 s~e 的字节中有多少个 1  支持双向索引   bitcount  k  0   -1    =5 就是全部       

     指令 bittop  operation destkey  key【key....】  bittop and/or andkey  k1  k2   结果是放在andkey 中

     场景:用户登录多少天 ,活跃数

list

         lpush k1 a  b c d e  , lrange  k1 0 -1 e d c b a 左侧push  rpush 则是右侧,反之 lpop 和rpop 从两侧 pop一个

         INDEX  0  数组一样取值,LTRIM/RTRIM  k1  start   end   删除两端的不是s~e 中间的

        场景:评论,消息队列,同一个服务中共享数据

hash:

    相似与hashmap

    指令   hset  k  k1  v  ,hset  s  name  mmy , hset s age 18 

    hgetall s  得到全部的k v   , hkeys  s  得到全部key , hvals 得到全部的值

    还支持计算  hget s age  -1

    应用场景:聚集数据 是指在多个库中,或多个查询中,放在一起

                       详情页,商品详情,用户详情

set: 

     集合 无序  不重复  不推荐 集合交并差 多实例  随机事件(抽奖,验证码)

     指令  sadd  k1  a b  c  d a  ,SMEMBERS k1  返回全部,无序,无重复

     srandmember  k1  3  反回随机3个  - 3 返回可以重复的 3个   

     srandmember  k1  3 8大于长度  返回不重读的 全部, -8 有重复八个

     SUNION / SINER / SDIFF k1  k2   交并差 运算   diff 是  k1 - k2  

     应用场景:可以共同好友,好友推荐,游戏推荐,商品推荐

sorted set:

        有序集合,去重,排序

       指令: zadd  key  score  member 

                zadd  k1  22  apple   11  banana   33  orange

                ZRANGE  k1  0 -1  withscores      按照 score 排序的

      应用场景:排行榜(粉丝),评论, 

      对于新的要求的序列(中间5个倒叙)就是重排序,存的内容小于64k 使用的是压缩表ziplist

     大于的时候用的是 skiplist  ,可以通过object  enconde key  查看


           

         

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值