美文网首页redis使用场景中间件
Redis数据类型及使用场景

Redis数据类型及使用场景

作者: 因你而在_caiyq | 来源:发表于2021-03-01 12:57 被阅读0次

    原创文章,转载请注明原文章地址,谢谢!

    Redis的命令网址:http://www.redis.cn/commands.html

    redis的8大类型
    • string(字符串)
    • hash(散列)
    • list(列表)
    • set(集合)
    • zset(有序集合,sorted set)
    • bitmap(位图)
    • hyperloglog(统计)
    • geo(地理)

    注:命令不区分大小写,而key区分大小写。类型详情可使用help @类型名称查看。

    string

    常用命令

    设置key和value:set key value
    获取key对应的value值:get key
    同时设置多个键值:mset key1 value1 key2 value2
    同时获取多个值:mget key1 key2
    递增数值:incr key
    增加指定整数:incrby key increment
    递减数值:decr key
    减少指定整数:decrby key decrement
    获取字符串长度:strlen key
    分布式锁:setnx key value / set key value [Ex seconds][PX milliseconds][NX|XX]

    • EX:key在多少秒之后过期
    • PX:key在多少毫秒之后过期
    • NX:当key不存在的时候,才创建key,效果等同于setnx
    • XX:当key存在的时候,覆盖key
    应用场景
    • 商品编号、订单号可以采用incr命令生成。
    • 文章的阅读数、评论数,只要打开了文章或者评论文章,直接可以用incr命令将阅读数增加1。

    hash

    redis中的hash对应Java中的哪种数据类型?
    Map<String,Map<Object,object>>

    常用命令

    一次设置一个字段值:hset key field value
    一次获取一个字段值:hget key field
    一次设置多个字段值:hmset key field1 value1 field2 value2
    一次获取多个字段值:hmget key field1 field2
    获取所有字段值:hgetall key
    获取某个key内的全部数量:hlen
    删除一个key:hdel

    应用场景
    • 简单版的购物车

      新增商品:hset shopcar:uid001 123456 1
      增加商品数量:hincrby shopcar:uid001 123456 1
      商品总数:hlen shopcar:uid001
      全部选择:hgetall shopcar:uid001

    list

    常用命令

    向列表左边添加元素:lpush key value1 value2
    向列表右边添加元素:rpush key value1 value2
    查看列表:lrange key start stop
    获取列表中元素个数:llen key

    应用场景
    • 微信文章订阅公众号

      李永乐老师发布了文章的id是11,我关注了李永乐老师的公众号,只要发布了新文章,就会推送至我的list中,lpush article:myId 11 001
      查看我订阅的全部公众号订阅的文章,类似于分页,如展示前10条,lrange article:myId 0 10

    set

    常用命令

    添加元素:sadd key member1 member2
    删除元素:srem key member1 member2
    获取集合中的所有元素:smembers key
    判断元素是否在集合中:sismember key member
    获取集合中的元素个数:scard key
    从集合中随机弹出一个元素,元素不删除:srandmember key [数字]
    从集合中随机弹出一个元素,出一个删一个:spop key [数字]
    集合的差集运算A-B,属于A但不属于B的元素构成的集合:sdiff key1 key2
    集合的交集运算A∩B,属于A同时也属于B的共同拥有的元素构成的集合:sinter key1 key2
    集合的并集运算AUB,属于A或者属于B的元素合并后的集合:sunion key1 key2

    应用场景
    • 微信抽奖小程序

      用户id,立即参与按钮:sadd key uid
      显示已经有多少人参与:scard key
      抽奖(随机抽取2个人,元素不删除):srandmember key 2
      抽奖(随机抽取2个人,元素删除):spop key 2

    • 微信朋友圈点赞

      新增点赞:sadd pub:msgId 点赞用户id1 点赞用户id2
      取消点赞:srem pub:msgId 点赞用户id
      展现所有点赞用户:smembers pub:msgId
      点赞用户数统计:scard pub:msgId
      判断某个用户是否对楼主点赞:sismember pub:msgId uid

    • 微博好友关注社交关系
    • QQ内推可能认识的人

    zset

    常用命令

    向有序集合中加入一个元素和该元素的分数:zadd key score1 member1 score2 member2
    按照元素分数从小到大的顺序,返回索引从start到stop之间的所有元素:zrange key start stop [withscores]
    获取元素的分数: zcore key member
    删除元素:zrem key member1 member2
    获取指定分数范围的元素:zrangebyscore key min max [withscores] [limit offset count]
    增加某个元素的分数:zincrby key increment member
    获取集合中元素的数量:zcard key
    获得指定分数范围内的元素个数:9zcount key min max
    按照排名范围删除元素:zremrangebyrank key start stop
    获取元素的排名(从小到大):zrank key member
    获取元素的排名(从大到小):zrevrank key member

    应用场景
    • 根据商品销售对商品进行排序显示

      定义商品销售排行榜(sorted set集合),key为goods:sellsort,分数为商品销售数量。
      商品编号001的销量是9,商品编号002的销量是15:zadd goods:sellsort 9 001 15 002
      用户又买了2件001商品,销量增加2:zincrby goods:sellsort 2 001
      求商品销量前10名:zrange goods:sellsort 0 10 withscores

    • 抖音热搜

      点击视频:zincrby hotvcr:20200919 1 八佰 / zincrby hotvcr:20200919 15 八佰 2 花木兰
      展示当日排行榜前10条:zrevrange hotvcr:20200919 0 9 withscores

    博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!

    相关文章

      网友评论

        本文标题:Redis数据类型及使用场景

        本文链接:https://www.haomeiwen.com/subject/yaigfltx.html