zoukankan      html  css  js  c++  java
  • Redis 五种数据类型

    本文为博主原创,未经允许不得转载:

      redis 共五种数据结构:

        类型及数据结构如下图所示:

                       

    1. String 

      常用命令:

    SET  key  value             //存入字符串键值对
    GET  key             //获取一个字符串键值
    MSET  key  value [key value ...]     //批量存储字符串键值对
    MGET  key  [key ...]         //批量获取字符串键值
    DEL  key  [key ...]         //删除一个键
    SETNX  key  value         //存入一个不存在的字符串键值对,如果key不存在,执行返回1,如果key存在,执行返回0
    EXPIRE  key  seconds         //设置一个键的过期时间(秒)
    
    
    # 原子加减
    INCR  key             //将key中储存的数字值加1
    DECR  key             //将key中储存的数字值减1
    INCRBY  key  increment         //将key所储存的值加上increment
    DECRBY  key  decrement     //将key所储存的值减去decrement

      使用场景:

        1. 缓存热点数据,缓存 string 类型的对象

        2. 缓存分布式会话 session

        3. 分布式锁 

        4. 计数器

      

    2. Hash 

      常用命令:

    HSET  key  field  value             //存储一个哈希表key的键值
    HGET  key  field                 //获取哈希表key对应的field键值
    HSETNX  key  field  value         //存储一个不存在的哈希表key的键值
    HMSET  key  field  value [field value ...]     //在一个哈希表key中存储多个键值对
    HMGET  key  field  [field ...]         //批量获取哈希表key中多个field键值
    HDEL  key  field  [field ...]         //删除哈希表key中的field键值
    HLEN  key                //返回哈希表key中field的数量
    HGETALL  key                //返回哈希表key中所有的键值
    
    HINCRBY  key  field  increment         //为哈希表key中field键的值加上增量increment

      使用场景:

        1. 可实现购物车功能

          1)以用户id为key

          2)商品id为field
          3)商品数量为value

    添加商品    hset cart:1001 10088 1
    增加数量    hincrby cart:1001 10088 1
    商品总数    hlen cart:1001
    删除商品    hdel cart:1001 10088
    获取购物车所有商品    hgetall cart:1001

      优缺点:

        优点:

          1)同类数据归类整合储存,方便数据管理   2)相比string操作消耗内存与cpu更小   3)相比string储存更节省空间

        缺点:

          1)过期功能不能使用在field上,只能用在key上

    3. list 

      常用命令:

    LPUSH  key  value [value ...]         //将一个或多个值value插入到key列表的表头(最左边)
    RPUSH  key  value [value ...]         //将一个或多个值value插入到key列表的表尾(最右边)
    LPOP  key            //移除并返回key列表的头元素
    RPOP  key            //移除并返回key列表的尾元素
    LRANGE  key  start  stop        //返回列表key中指定区间内的元素,区间以偏移量start和stop指定
    
    BLPOP  key  [key ...]  timeout    //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待
    BRPOP  key  [key ...]  timeout     //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待

      应用场景:

    Stack(栈) = LPUSH + LPOP
    Queue(队列)= LPUSH + RPOP
    Blocking MQ(阻塞队列)= LPUSH + BRPOP

         根据以上数据结构可以实现:消息发布订阅,消息推送等场景

    4. Set 

      Sets 是无序集合,自动去重。

      常用命令:

    SADD  key  member  [member ...]            //往集合key中存入元素,元素存在则忽略,若key不存在则新建
    SREM  key  member  [member ...]            //从集合key中删除元素
    SMEMBERS  key                    //获取集合key中所有元素
    SCARD  key                    //获取集合key的元素个数
    SISMEMBER  key  member            //判断member元素是否存在于集合key中
    SRANDMEMBER  key  [count]            //从集合key中选出count个元素,元素不从key中删除
    SPOP  key  [count]                //从集合key中选出count个元素,元素从key中删除

      Set 运算命令

    SINTER  key  [key ...]                       //交集运算
    SINTERSTORE  destination  key  [key ..]         //将交集结果存入新集合destination中
    SUNION  key  [key ..]                       //并集运算
    SUNIONSTORE  destination  key  [key ...]        //将并集结果存入新集合destination中
    SDIFF  key  [key ...]                       //差集运算
    SDIFFSTORE  destination  key  [key ...]         //将差集结果存入新集合destination中

      使用场景:

         1. 微博点赞,收藏,标签

         2. 微博或微信中可能认识的人,共同好友,共同关注的话题等。

    5. Zset

      常用命令:

    ZADD key score member [[score member]…]    //往有序集合key中加入带分值元素
    ZREM key member [member …]        //从有序集合key中删除元素
    ZSCORE key member             //返回有序集合key中元素member的分值
    ZINCRBY key increment member        //为有序集合key中元素member的分值加上increment 
    ZCARD key                //返回有序集合key中元素个数
    ZRANGE key start stop [WITHSCORES]    //正序获取有序集合key从start下标到stop下标的元素
    ZREVRANGE key start stop [WITHSCORES]    //倒序获取有序集合key从start下标到stop下标的元素
    
    
    ZUNIONSTORE destkey numkeys key [key ...]     //并集计算
    ZINTERSTORE destkey numkeys key [key …]    //交集计算

      使用场景:

        榜单排名,热点排名

    zadd board 85 zhangsan
    zadd board 72 lisi
    zadd board 96 wangwu
    zadd board 63 zhaoliu
    
    # 获取排名前三的用户(默认是升序,所以需要 rev 改为降序)
    zrevrange board 0 3
    
    # 获取某用户的排名
    zrank board zhaoliu

  • 相关阅读:
    对象工厂函数与构造函数
    H5案例学习笔记
    对象工厂函数与构造函数
    JS对象的创建与使用
    CSS浏览器兼容性写法小结
    网页布局二三事
    关于URL、Web的一些概念
    什么是单点登录及解决方法
    Django--model-数据库操作
    Vue端增删改查实现
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15150303.html
Copyright © 2011-2022 走看看