Redis中几种基础数据类型的使用场景

272 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情


Redis中几种基础数据类型的使用场景和使用方法

1:string,最常用,存储json等...

数字增减

递增:

incr key

增加指定数字:

incrby key 10

递减

decr key

减去指定数字

decrby key 10

使用场景:文章浏览量+1、点赞等

incr article:1001

incr,原子自增,线程安全

2:hash

Map<String,Map<String,Object>>

一次设置一个值

hset key field value

一次设置多个值

hmset key field value field value field value...

一次获取一个值

hget key field

一次获取多个值

hmget key field field field...

一次获取全部值

hgetall key

使用场景:购物车(hset 字符串 商品id 数量)

设置值:

hset shopcar:uid1001 21002 1
hset shopcar:uid1001 21015 3
hset shopcar:uid1001 21020 1
hset shopcar:uid1001 21021 10

查询:

hgetall shopcar:uid1001

3:list

向列表左边添加元素

lpush key value value value

向列表右边添加元素

rpush key value value value

查看列表

lrange key start stop

查看列表的长度

llen key

使用场景:存储商品评论信息

lpush items:comment:1001 {"id":21002,"name":"Huawei","date":1600484283054,"content":"评论内容"}

4:set,集合,不重复数据

有交集、并集、差集操作

  1. 使用场景1,抽奖

    参与抽奖:sadd key 用户id

    查看总参与人数:scard key

    抽奖(抽3个人):spop key 3

  2. 使用场景2,朋友圈点赞

    新增点赞:sadd pub:msg1001 点赞用户id

    取消点赞:srem pub:msg1001 点赞用户id

    展现所有点赞过的用户:smembers pub:msg1001

    点赞用户数统计:scard pub:msg1001

    判断某个朋友是否对楼主点赞过:sismember pub:msg1001 用户id

  3. 使用场景3,共同关注的人

    sadd group1 1001 1002 1003 1004 1005
    sadd group2 1003 1004 1005 1006 1007
    
    取交集
    sinter group1 group2
    

5:zset

set类型的升级,有序集合类型,支持常用的添加,删除,范围读取操作,一般用做排行榜功能

使用场景,排行榜

zadd scores_ranking 60 张三
zadd scores_ranking 90 悟空
zadd scores_ranking 80 李四
zadd scores_ranking 50 八戒
zadd scores_ranking 100 佛祖

看下存储的数据,已经给排好序了

image.png

取前三

zrevrange scores_ranking 0 2

取后三

zrange scores_ranking 0 2