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

奋斗吧
奋斗吧
擅长邻域:未填写

标签: Reids传统五大基本类型与落地应用 Java博客 51CTO博客

2023-07-15 18:24:41 70浏览

Reids传统五大基本类型与落地应用,官网命令大全](http://www.redis.cn/commands.html)八大基本数据类型分别为:• String(字符串类型)• Hash(散列类型)• List(列表类型)• Set(集合类型)• SortedSet(有序集合类型,简称zset)• Bitmap(位图)• HyperLogLog(统计)• 

官网命令大全](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传统五大基本类型与落地应用_应用场景


三、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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695