Redis数据类型及使用场景

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

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>

常用命令

一次设置一个字段值: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数据类型及使用场景)