zoukankan      html  css  js  c++  java
  • Redis基础-基本数据类型

    基础命令

    1.清屏和帮助

    清屏:clear

    获取当前时间:time

    帮助:help 命令

    2.退出客户端

    命令:quit、exit、<esc>

    业务数据的特殊性

    原始业务功能设计

    • 秒杀
    • 618活动、双十一活动
    • 排队购票

    运营平台监控到的突发高频率访问数据

    突发时的时政要闻,被强势围观

    高频复杂的统计数据

    • 在线人数
    • 投票排行榜

    附加功能

    系统功能优化和升级

    • 但服务器升级集群
    • Seeion管理
    • Token管理

    常见的五种数据类型

    Sting类型(字符)

    • 储存的数据:单个数据
    • 储存的格式:一个储存空间一个数据
    • 储存内容:通常字符串,如果以字符串以证书方式展示,则可以作为数字操作

    String类型的基本操作

    get、set、del(读取、写入、删除)

    mset:添加或修改多个数据

    mget:获取多个数据

    strlen:获取数据长度(字符串的长度)

    append:追加信息到原来的信息后面,如果原始信息存在就追加,否则就新建

    String类型的数据拓展

    业务场景

    分表,使用多张表储存类型数据,但是对应的id必须保持统一性,不能重复

    解决方案

    incr、decr(数值自增自减,可以作为数据的唯一键

     

    数据增加、减少指定范围的值

    incrby、decrby(整数类型

    incrbyfloat(小数类型)

    String作为数值操作:

    • string类型在redis中就是个字符串,当遇到增减操作incr和decr是会转成数值计算
    • redis所有操作都是原子性,采用单线程处理所有业务,不用考虑并发。
    • 注:redis原始数据不能转成数值或超过一定的范围,也报错。

    业务场景

    海选投票,每个微信号每四个小时只能投一票

    解决方案

    设置数据具有一定的生命周期

    setex:秒为单位, 设置phone存在的时间为10s,10s之后就为nil

    psetex:毫秒为单位

     String类型操作注意事项

      数据操作反馈结果

    1. 标识结果是否运行成功 
      1. (integer) 0→false 失败
      2. (integer) 1→true  成功
    2. 表示运行结果值:
      1. (integer) 3→3  3个
      2.  (integer) 1→1 1个
    3. 数据为获取到
      1. nil等同于null
    4. 最大储存量512MB
    5. 最大范围long的最大值

     主页高频信息访问控制,微博粉丝数量和微博数量

    key的设置约定

    热点数据key命名

    表名:主键命:主键值:字段名

    例:set user:id:001:fans 1000000

            set user:id:001:blogs 1000000

            或者

            set user:id:001 {id:001,fans:1000000,blogs:1000000}

    Hash类型(哈希)

    存储需求:对一系列数据储存进行编组,方便管理,典型的对象存储

    存储结构:一个储存空间保存多个键值对

    hash类型:使用哈希表存储结构

    Hash类型基本操作

    hset:添加修改

    hget:获取数据

    hsetall:获取全部数据

    hdel:删除数据

    hmset:添加修改多个数据

    hmget:获取多个数据

    hlen:获取哈希表中的字段的数量

    hexists:获取哈希表中是否存在指定的字段

     

    Hash类型拓展操作

    业务场景

    实现抢购、实现购物车功能

    解决方案

     hkeys:获取哈希表中字段名

     hvals:获取哈希表中的字段值

     hincrby:指定字段数值增加指定范围的值

     hincrbyfloat:浮点型数值增加指定范围的值

     

    Hash类型注意

    hash类型只能存储字符串,不允许其他类型,不存在嵌套现象。如果未获取到数据则为nil

    hash存储232-1键值对

    hash贴近对象存储形式,不要存储大量的对象数据,更不要作为对象列表使用

    hgetall如果内部字段(field)太多,遍历整体数据效率太低,可能成为数据访问瓶颈

    List类型(列表)

    数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

    需要的存储结构:一个存储空间保存多个数据,且通过数据可以提现进入顺序

    list类型:保存多个数据,底层使用双向链表存储结构实现

    List类型数据基本操作

    lpush:从左进去添加/修改数据

    rpush:从右进去添加/修改数据

    lrange:获取数据,如果左边先进去,从0开始,name获取最后存入的数据。从左进去,获取全部数据(0到-1)。

    lindex:通过索引获取

    llen:key长度

    lpop:从左获取并移除

    rpop:从右获取并移除

     

    List类型数据拓展操作

    blpop:从左边开始,规定时间内获取并移除数据;规定时间内添加新数据也会取出来

    brpop:从右边开始,规定时间内获取并移除数据

    业务场景

    例如朋友圈中取消点赞

    解决方案:

    lrem:移除指定数据

     

    List类型数据注意事项

    List类型保存的数据都是string类型,数据总容量是有限的,最多232-1个元素

    List具有索引概念,获取全部的数据结束索引设置成-1

    List可以对数据进行分页操作,通常第一页来自于list,第二页以及更多的通过数据库形式加载

    Set类型数据

    存储需求:存储大量的数据,查询方面提升更高的效率

    存储结构:能够保存大量的数据,高效的内存存储机制,便于查询

    set类型:与hash类型相同,仅储存键值,不存储值(nil),重复值不允许

    Set类型数据基本操作

    sadd:添加值

    smembers:获取全部数据

    srem:删除值

    scard:获取集合数据总量

    sismember:判断集合中是否包含指定数据

    Set类型数据拓展操作

    业务场景

    每位用户使用今日头条时会设置三项内容,后期为了增加用户活跃度、兴趣点、让用户对其他内容产生兴趣,增加客户存留度

    redis应用于随机类检索,热点新闻推荐、热点歌曲推荐、热卖旅游线路、推荐app、大v推荐

    解决方案:

    srandmember:随机获取集合中指定数量的数据

    spop:随机获取集合中某个数据并将改数据移除集合

     业务场景

     qq好友推荐、微信公众号推荐、饿了吗美食推荐

    解决方案

    sinter:求交集

    sunion:求并集

    sdiff:求差集

    sinterstore:求交集并存储指定集合中

    sunionstore:求并集并存储到指定结合中

    sdiffstore:求差集并存储到指定集合中

    smove:将指定数据从原始移到目标集合

    Set类型数据注意事项

    set类型不予许重复,如果数据已存在则只保留一份

    set结构虽然和hash存储结构相同,但是无法启用hash中存储空间

    Sorted_set类型数据

    存储需求:数据排序有利于数据有效展示,需要提供一种可以根据自身特性的排序方式

    存储结构:新的存储结构,可以保存排序的数据

    set类型:在set存储基础上添加可排序字段

    Sorted_set类型数据基本操作

    zadd:添加数据

    zrange:获取全部数据

    zrevrange:反向获取全部数据

    zrem:删除数据

     zrangebyscore:按条件查询,limit 0 3,从索引0开始取数

     zrevrangebyscore:反向,按条件取数

     zremrangebyscore:按条件删除

     zremrangebyrank:按索引删除

    zcard:获取集合总量

    zcount:根据条件获取结合总量

     zinterstore:集合交集,默认相加,还可以获取max,或者min

     zunionstore:集合并集,重复的默认相加,同样可以获取max,或者min

    Sorted_Set类型数据拓展操作

    业务场景

    各类综艺海选投票、各类资源网站Top10、游戏好友亲密度

    解决方案

    zrank:正向插叙,获取数据对应索引

    zrevrank:反向查询,获取数据对应索引

     zscore:值获取

     zincrby:增加指定的数据,或者修改数据

    Sorted_Set类型数据操作注意事项

    Sorted_Set储存空间是64位,保存数据也可是一个双精度double值,基于双精度浮点特征,但也有可能丢失精度

    Sorted_Set底层还是基于set结构,因此数据不能重复,如果重复则可能覆盖前面的,保留最后一次修改结果

  • 相关阅读:
    调用外部文件(ShellExecute)
    字体函数 -- GetDeviceCaps
    字体函数 -- EnumFonts
    字体函数 -- EnumFontFamilies
    回调函数 EnumFontFamProc
    AlphaBlend
    c# 编程修改 wince 系统时间
    windows 打开文件夹
    C# wince 实现软件忙鼠标状态改变
    CSDN第一期总结之三:Thread的问题(转)
  • 原文地址:https://www.cnblogs.com/-zzc/p/13341961.html
Copyright © 2011-2022 走看看