redis学习笔记(一) - redis的数据类型

本文详细介绍了Redis中的九种主要数据类型,包括String、HASH、List、Set、Zset以及Redis5.0新增的Stream,涵盖了它们的基本操作、应用场景和示例,如分布式锁、社交互动和商品销售排名等。
摘要由CSDN通过智能技术生成

目录

redis九大数据类型

备注说明

String

最常用:

同时设置/获取多个键值:

数值增减

获取字符串长度

分布式锁

应用场景

HASH

一次设置一个字段值

一次获取一个字段值

一次设置多个字段值

一次获取多个字段值

获取所有字段值

获取某个key内的全部数量

删除一个key

应用场景

LIST

简单说明

向列表左边添加元素

向列表右边添加元素

查看列表

获取列表中元素个数

应用场景

Set(值不重复)

添加元素

删除元素

遍历集合中的所有元素

判断元素是否在集合中

获取集合中的元素总数

从集合中随机弹出一个元素,元素不删除

从集合中随机太初一个元素,出一个删一个

集合运算

集合差集运算 A-B

集合交集运算A∩B

集合并集运算A ∪ B

应用场景

抽奖小程序

点赞

好友关注社交关系

可能认识的人

Zset(有序不重复)

添加元素

按照元素分数从小到大的顺序

获取元素的分数

删除元素

获取指定分数范围的元素

增加某个元素的分数

获取集合中元素的数量

获取指定分数范围内的元素格式

按照排名范围删除元素

获取元素的排名

应用场景

根据商品销售对商品进行排序显示

热搜


redis九大数据类型

  1. String(字符类型)
  2. Hash(散列类型)
  3. List(列表类型)
  4. Set(集合类型)
  5. SortedSet(有序集合类型,简称zset)
  6. Bitmap(位图)
  7. HyperLogLog(统计)
  8. GEO(地理、地图)
  9. Stream(流、队列)

Stream是redis5.0版本新增的数据结构。

主要用于消息队列,基本不用,市面上有功能更完备的产品(rabbitMQ,rocketMQ等)

备注说明

命令不区分大小写,而key是区分大小写的。

Help @类型名词 用于查询类型下的命令

String

最常用:

set key value

get key

同时设置/获取多个键值:

mset key value [key value…]

mget key [key…]

数值增减

递增数字:incr key

增加指定的整数:incrby key increment

递减数值:decr key

减少指定的整数:decrby key decrement

获取字符串长度

strlen key

分布式锁

setnx key value

set key value [EX seconds] [PX milliseconds] [NX|XX]

应用场景

比如抖音无限点赞某个视频或者商品,点一下加一次。

HASH

Map<String, Map<Object, Object>>

一次设置一个字段值

HSET key field value

一次获取一个字段值

HGET key field

一次设置多个字段值

HSET key field value [field value…]

一次获取多个字段值

HGET key field [field…]

获取所有字段值

HGETALL key

获取某个key内的全部数量

Hlen key

删除一个key

Hdel key

应用场景

购物车

新增商品 hset shopcar:uid1024 334488 1
新增商品 hset shopcar:uid1024 334477 1
增加商品数量 hincrby shopcar:uid1024 334477 1
商品总数 hlen shopcar:uid1024
全部选择 hgetall shopcar:uid1024

LIST

简单说明

一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。

向列表左边添加元素

LPUSH key value [value]

向列表右边添加元素

RPUSH key value [value]

查看列表

LRANGE key start stop

获取列表中元素个数

LLEN key

应用场景

  1. 微信公众号订阅的消息
  1. 用户1 和用户2 分别发布了文章 123和124
  2. 我关注了他们两个,只要他们发布新文章,就会安装进我的List
    1. Lpush likearticle:myid 123 124
  3. 查看我订阅的所有文章,类似分页,下面0~10就是一次显示10条

Lrange likearticle:myid 0 9

  1. 商品评论列表

需求1: 用户针对某一商品发布评论,一个商品会被不同的用户进行评论,保存商品评论时,要按时间顺序排序。

需求2:用户在前端页面查询该商品的评论,需要按照时间顺序降序排序。

Case:

使用list存储商品评论信息,key是该商品的idvalue是商品评论信息商品编号为1001的商品评论keyitems:comment:1001
lpush items:comment:1001 {"id":1001,"name":"huawei","date":1600484283054,"content":"las"}

Set(值不重复)

添加元素

Sadd key member [member…]

删除元素

Srem key member [member…]

遍历集合中的所有元素

SMEMBERS key

判断元素是否在集合中

SISMEMBER key member

获取集合中的元素总数

SCARD key

从集合中随机弹出一个元素,元素不删除

SRANDMEMBER key [数字]

从集合中随机太初一个元素,出一个删一个

SPOP key [数字]

集合运算

A:ABC12

B:123AX

集合差集运算 A-B

属于A但不属于B的元素构成的集合

SDIFF key [KEY…]

BC

集合交集运算A∩B

属于A同时也属于B的共同拥有的元素构成的集合

SINTER key [key…]

       12a

集合并集运算A ∪ B

属于A或者属于B的元素合并后的集合

SUNION key [key…]

123abcx

应用场景

抽奖小程序
  1. 用户ID,立即参与抽奖,sadd key userId
  2. 显示已经有多少人参与 SCARD key
  3. 抽奖(从set中任意选取2个中奖人)

 SRANDMEMBER key 2  元素不删除

SPOP key 2 元素会删除

点赞

  1. 新增点赞 sadd pub:msgid 点赞用户ID1 点赞用户ID2
  2. 取消点赞 srem pub:msgid 点赞用户ID
  3. 展现所有点赞过的用户 smembers pub:msgid
  4. 点赞用户数统计,就是常见的点赞红色数字 scard pub:msgid
  5. 判断某个朋友是否点赞过 SISMEMBER pub:msgid 用户ID

好友关注社交关系

  1. 共同关注的人 SINTER
  2. 我关注的人也关注了他 SDIFF

可能认识的人

Zset(有序不重复)

添加元素

Zadd key score member [score member]

按照元素分数从小到大的顺序

ZRANGE key start stop [WITHSCORES]

获取元素的分数

ZSCORE key member

删除元素

ZREM key member [member…]

获取指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

增加某个元素的分数

ZINCRBY key increment member

获取集合中元素的数量

ZCARD key

获取指定分数范围内的元素格式

Zcount key min max

按照排名范围删除元素

ZREMRANGEBYRANK key start stop

获取元素的排名

从大到小 ZRANK key member

从小到大 ZREVRANK key member

应用场景

根据商品销售对商品进行排序显示

思路:定义商品销售排行榜 key为goods:sellsort,分数为商品销售数量

  1. 商品编号1001的销量是9,1002是10 zadd goods:sellsort 9 1001 15 1002
  2. 有一个客户又买了2件商品1001,1001销量加2 zincrby goods:sellsort 2 1001
  3. 求商品销量前10名 zrange goods:sellsort 0 10 withscores
热搜
  1. 点击视频 ZINCRBY hotvcr:20240325 1 vcrid1
  2. ZINCRBY hotvcr:20240325 15 vcrid1
  3. 展示当日排行前10条 ZREVRANGE hotvcr:20240325 0 9 withscores

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小凯小凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值