Redis基础

目录

目录

1. Redis 基本数据类型

目录

1. Redis 基本数据类型

1.1、8 大类型

1.2、String

 1.3、hash

1.4、list与其说 list 是个集合,还不如说 list 是个双端队列

1.5、 Set

1.6、zset


1.1、8 大类型

1.2、String

 1.3、hash

1.4、list与其说 list 是个集合,还不如说 list 是个双端队列

1.5、 Set


1. Redis 基本数据类型

1.1、8 大类型

以前是 5 种数据类型,现在是 8 种啦~

  1. String(字符类型)   场景:点赞、喜欢
  2. Hash(散列类型)    简单版购物车
  3. List(列表类型)
  4. Set(集合类型)       场景:点赞、共同关注(交集)
  5. SortedSet(有序集合类型,简称zset)
  6. Bitmap(位图)
  7. HyperLogLog(统计)
  8. GEO(地理)

1.2、String

获取/设置单个值

设置:set key value

获取get key 

Redis命令不区分大小写,而key区分大小写

获取/设置多个值

设置:mset key value [key value ...]

获取:mget key [key ...]

m 就是 more的意思

 数值的增减

增加:incr a1

指定增加的数值:incrby a1 4

减少:decr a1

指定减少的数值:decrby a1 3

 获取字符串长度

命令:strlen key

分布式锁

设置分布式锁:set key value [EX seconds][PX milliseconds][NX|XX]

参数解释:

  1. EX:key 在多少秒之后过期
  2. PX:key 在多少毫秒之后过期
  3. NX:当 key 不存在的时候,才创建 key,效果等同于setnx key value
  4. XX:当 key 存在的时候,覆盖 key

 

 应用场景

  1.  商品编号,订单号采用incr命令生成
  2. 文章阅读量,点赞量

 image-20210127235408326

 1.3、hash

redis中的hash类似于java中的Map<String,Map<Object,object>>,字符串为key,Map为value

获取/设置单个字段值

设置: hset key field value

获取:hget key field

同时设置/获取多个字段值 

设置:hmset key field value [field value ...]

获取:hmget key field [field ...]

应用场景

购物车早期版本,可在小中厂项目中使用

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

1.4、list
与其说 list 是个集合,还不如说 list 是个双端队列

添加元素 & 查看列表

向 list 左边添加元素,如果 list 不存在则创建该 list:LPUSH key value [value ...]
向 list 右边添加元素,如果 list 不存在则创建该 list:RPUSH key value [value ....]
查看 list 中包含的元素:LRANGE key start stop,注:LRANGE key 0 -1 表示查看 list 中所有的元素

获取列表中元素的个数

命令:llen key

删除元素

  1. 从左边出队:LPOP key
  2. 从右边出队:RPOP key
  3. 清空list:ltrim key start stop

1.5、 Set

set和java中的hashset比较像,无顺序,无重复

添加元素 & 删除元素 & 查看元素

  1. 向 set 中添加一个元素:SADD key member[member ...]
  2. 删除 set 中的指定元素:SREM key member [member ...]
  3. 删除Set:del key [key ...]
  4. 获取 set 中的所有元素:SMEMBERS key

 

判断元素是否在集合中

判断指定元素是否在 set 中:SISMEMBER key member

获取集合中的元素个数

获取 set 中元素的个数:SCARD key

 

从集合中随机弹出元素

  1. 从集合中随机弹出元素,元素不删除:SRANDMEMBER key [数字]
  2. 从集合中随机弹出一个元素,出几个删几个:SPOP key[数字]

默认弹出一个

集合运算

集合的差集运算A-B:SDIFF key [key ...],属于A但不属于B的元素构成的集合
集合的交集运算A∩B:SINTER key [key ...],属于A同时也属于B的共同拥有的元素构成的集合
集合的并集运算AUB:SUNION key [key ...],属于A或者属于B的元素合并后的集合

 应用场景

1、微信抽奖小程序

  1. 如果某个用户点击了立即参与按钮,则执行 sadd key useId 命令将该用户 ID 添加至 set 中
  2. 显示已经有多少人参与了抽奖:SCARD key
  3. 抽奖(从set中任意选取N个中奖人)

                1、随机抽奖2个人,元素不删除:SRANDMEMBER key 2
                2、随机抽奖3个人,元素会删除:SPOP key 3

image-20210128225210254

2、微信朋友圈点赞

新增点赞:SADD pub:msgID 点赞用户ID1 点赞用户ID2
取消点赞:SREM pub:msgID 点赞用户ID
展现所有点赞过的用户:SMEMBERS pub:msgID
点赞用户数统计,就是常见的点赞红色数字:SCARD pub.msgID
判断某个朋友是否对楼主点赞过:SISMEMBER pub:msgID 用户ID

3、Bilibili 共同关注的好友

共同关注的好友:SINTER 我关注的人 Ta关注的人

1.6、zset

形象理解 zset:向有序集合中加入一个元素和该元素的分数

添加元素 & 删除元素 & 获取元素

  1. 向 zset 中添加一个带分数(权值)的元素:ZADD key score member [score member ...]
  2. 删除 zset 中的指定元素:ZREM key member [member ...]
  3. 返回索引从start到stop之间的所有元素,并按照元素分数从小到大的顺序:ZRANGE key start stop [WITHSCORES],注:如果想要获取所有元素并且从小到大排序,可写为 ZRANGE key 0 -1;按照元素分数从大到小的顺序:zrevrange key start stop [WITHSCORES]注:如果想要获取所有元素并且从小到大排序,可写为 zrevrange key 0 -1

获取集合中元素的数量

获取集合中元素的数量:ZCARD key

获得指定分数范围内的元素个数 

获得指定分数范围内的元素个数:ZCOUNT key min max

 获取指定分数范围的元素

获取指定分数范围的元素:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

获取元素的分数

获取指定元素的分数:ZSCORE key member

 增加某个元素的分数

增加某个元素的分数:ZINCRBY key increment member

获取元素的排名

从小到大:ZRANK key member

从大到小:ZREVRANK key member

应用场景

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

思路:定义商品销售排行榜(sorted set集合),key为goods:sellsort,分数为商品销售数量。

  1. 商品编号1001的销量是9,商品编号1002的销量是15: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

image-20210128233926925


2、抖音热搜

  1. 点击视频增加播放量:ZINCRBY hotvcr:20200919 1八佰ZINCRBY hotvcr:20200919 15 八佰 2 花木兰

  2. 展示当日排行前10条:ZREVRANGE hotvcr:20200919 0 9 WITHSCORSimage-20210128233458432

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值