0
点赞
收藏
分享

微信扫一扫

Reids传统五大基本类型与落地应用

Ichjns 2023-07-15 阅读 68

官网命令大全](http://www.redis.cn/commands.html)

八大基本数据类型分别为:

  • • String(字符串类型)
  • • Hash(散列类型)
  • • List(列表类型)
  • • Set(集合类型)
  • • SortedSet(有序集合类型,简称zset)
  • • Bitmap(位图)
  • • HyperLogLog(统计)
  • • GEO(地理)

注意:在使用命令时,命令不区分大小写,但是key是区分大小写的

一、 String(字符串类型)

1 、基础命令

  1. 1. 基础

set key value #设置一个key和value
get key  #通过key获取value

  1. 1. 同时设置获取多个键值

mset key value [key value ....]
mget key [key ....]

  1. 1. 数值增减

incr key  #递增数字
incrby key increment  #递增指定的整数
decr key  #递减数字
decrby key decrement  #递减指定的整数

  1. 1. 获取字符串长度

strlen key  #获取字符串长度

  1. 1. 过期

expire name 60 # 数据在 60s 后过期
ttl name # 查看数据还有多久过期
setex key 60 value # 数据在 60s 后过期 (setex:[set] + [ex]pire)

  1. 1. 分布式锁

setnx key value #简写形式

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

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

> set lock pay ex 20 NX
OK
> get lock
pay
> set lock order ex 20 NX
OK
> set lock pay ex 20 NX
null
> get lock
order

2、 应用场景

一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。

  1. 1. 商品编号、订单编号采用incr自动生成

> incr item:1
1
> incr item:1
2
> incr item:1
3

2、对于某一浏览次数的统计采用incr自动递增

如只要点击了rest地址,就直接使用incr key命令增加1,完成统计浏览次数的统计。

二、Hash(散列类型)

hash其实就可以看成是一个Map<String,Map<Object,Object>>

1、基础命令

  1. 1. 一次设置一个字段值

hset key field value

  1. 1. 一次获取一个字段值

hget key field

  1. 1. 一次设置多个字段值

hmset key field value [field value ...]

  1. 1. 一次获取多个字段值

hmget key field [field ....]

  1. 1. 获取所有字段值

hgetall key

  1. 1. 判断是否存在

hexists key field

  1. 1. 获取全部的键

hkeys key # 获取 key 列表

  1. 1. 获取全部的value

hvals key # 获取全部的值列表

  1. 1. 获取某个key内的全部数量

hlen

  1. 1. 删除一个key

hdel

2、应用场景

早期在购物车中中使用

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

Reids传统五大基本类型与落地应用_redis


三、List(列表类型)

链表数据结构,特点易于数据元素的插入和删除 并且且可以灵活调整链表⻓度,但是链表的随机访问困难。

1、基本命令

  1. 1. 向列表左边添加元素

lpush key value [value ...]

  1. 1. 向列表右边添加元素

rpush key value [value ....]

  1. 1. 弹出元素

lpop key # 左边弹出元素
rpop key # 右边弹出元素

  1. 1. 查看列表

lrange key start stop # lrange key 0 -1 查看全部

  1. 1. 获取列表中元素的个数

llen key

2、应用场景

例如微信文章订阅公众号或者说是消息队列

如果现在发布了两篇文章id分别为11和12,那么就会执行:lpush likearticle:自己id 11 12,如果想分页查看自己订阅的文章lrange  likearticle:自己id 0 10

四、Set(集合类型)

set 类似于 Java 中的 HashSet,特点是无序且不重复。

1、基本用法

  1. 1. 添加元素

sadd key member[member ...]

  1. 1. 删除元素

srem key member [member ...]

  1. 1. 获取集合中的所有元素

smembers key

  1. 1. 判断元素是否在集合中

sismember key member

  1. 1. 获取集合中的元素个数

scard key

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

srandmember key [数字]

  1. 1. 从集合中随机弹出一个元素,出一个删一个

spop key [数字]

  1. 1. 集合运算
  • • 集合的差集运算A-B(属于A但不属于B的元素构成的集合)

sdiff key [key ...]

  • • 集合的交集运算A∩B(属于A同时也属于B的共同拥有的元素构成的集合)

sinter key [key ...]

  • • 集合的并集运算AUB(属于A或者属于B的元素合并后的集合)

sunion key [key ...]

2、应用场景

  1. 1. 微信抽奖小程序

图示

Reids传统五大基本类型与落地应用_redis_02


操作

语句

用户ID,立即参与按钮

sadd key 用户ID

显示已经有多少人参与了,上图23208人参加

scard key

抽奖(从set中任意选取N个中奖人)

srandmember key 2 随机抽奖2个人,元素不删除

  1. 1. 微信朋友圈点赞


操作

语句

新增点赞

sadd pub:msgID 点赞用户ID1 点赞用户ID2

取消点赞

srem pub:msgID 点赞用户ID

展现所有点赞的用户

smembers pub:msgID

点赞用户数统计

scard pub:msgID

判断某个朋友是否对楼主点过赞

sismember pub:msgID 用户ID

  1. 1. 微博好友关注社交关系

Reids传统五大基本类型与落地应用_应用场景_03


  • • 共同关注的人

127.0.0.1:6379>sadd s1 1 2 3 4 5
(intege)5
127.0.0.1:6379>sadd s2 3 4 5 6 7
(intege)5
127.0.0.1:6379>sinter s1 s2
1) "3"
2) "4"
3) "5"

共同关注: 我去到局座张召忠的微博,马上获得我和局座共同关注的人

  • • 我关注的人也关注他(大家爱好相同)

127.0.0.1:6379>sadd s1 1 2 3 4 5
(intege)5
127.0.0.1:6379>sadd s2 3 4 5 6 7
(intege)5
127.0.0.1:6379>sismember s1 3
(intege)1
127.0.0.1:6379>sismember s2 3
(intege)1

共同爱好: 我关注了华为余承东,余承东也关注了局座召忠,我和余总有共同的爱好

  • • QQ内推可能认识的人

127.0.0.1:6379>sadd s1 1 2 3 4 5
(intege)5
127.0.0.1:6379>sadd s2 3 4 5 6 7
(intege)5
127.0.0.1:6379>sdiff s1 s2
1) "1"
2) "2"
127.0.0.1:6379>sdiff s2 s1
1) "6"
2) "7"

五、SortedSet(有序集合类型,简称zset)

1、基本用法

  1. 1. 添加元素

zadd key score member [score member ...]

  1. 1. 按照元素分数从小到大的顺序 返回索引从start到stop之间的所有元素

zrange key start stop [WITHSCORES]

  1. 1. 获取元素的分数

zscore key member

  1. 1. 删除元素

zrem key member [member ...]

  1. 1. 获取指定分数范围的元素

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

  1. 1. 增加某个元素的分数

zincrby key increment member

  1. 1. 获取集合中元素的数量

zcard key

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

zcount key min max

  1. 1. 按照排名范围删除元素

zremrangebyrank key start stop

  1. 1. 获取元素的排名
  • • 从小到大

zrank key member

  • • 从大到小

zrevrank key member

2、应用场景

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

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

操作

语句

商品编号1001的销量是9,商品编号1002的销量是15

zadd goods:sellsort 9 1001 15 1002

有一个客户又买了2件商品1001,商品编号1001销量加2

zincrby goods:sellsort 2 1001

求商品销量前10名

zrange goods:sellsort 0 10 withscores

127.0.0.1:6379>zadd goods:sellsort 9 1001 15 1002
(intege)2
127.0.0.1:6379>range goods:sellsort 0 10 withscores
1) "1001"
2) "9"
3) "1002"
4) "15"
127.0.0.1:6379>zincrby goods:sellsort 2 1001
"11"
127.0.0.1:6379>range goods:sellsort 0 10 withscores
1) "1001"
2) "11"
3) "1002"
4) "15"

  1. 1. 抖音热搜

Reids传统五大基本类型与落地应用_应用场景_04


操作

语句

点击视频

zincrby hotvcr:20200919 1八佰

zincrby hotvcr:20200919 15 八佰 2 花木兰

展示当日排行前10条

zrevrange hotvcr:20200919 0 9 withscores

举报

相关推荐

0 条评论