redis 各种数据类型的应用场景

目录

一.string类型

二.hash 类型  

三.list 类型

四.set类型

 五.zset 类型 (排序)


一.string类型

  • 单值缓存    set key value    get key value
  • 对象缓存 

1. set key value(json 数据格式)

2.批量set   mset user_1_name zhuge  user_1_balance 1888

mget user_1_name   user_1_balance

3.分布式锁

setnx product_1 true //返回1代表加锁成功

set product_1 true  // 返回0代表加锁失败 

del product_1  //释放锁

更好的写法: set product_1 true ex 10 nx   //防止意外导致死锁 加过期时间

 4.计数器

比如文章的阅读量

incr article_readcount_文章id

get article_readcount_文章id

 5.分布式系统(分库分表)数据库主键id

incrby orderid 100

二.hash 类型  

1.对象缓存 

hmset user name_1 zhuge  balance_1 1888 name_2 yangguo 

2.购物车场景

 

 以用户id 为key 比如 cart_1001  这个用户的购物车 以商品id 为field  数量为value

添加耳机(商品id为121) hmset cart_1001 121 1

添加电脑(商品id为122) hmset cart_1001 122 1

给某个商品加数量,比如电脑数量加5  hincrby cart_1001 122 5

获取购物车商品数量   hlen cart_1001

删除购物车某个商品,比如删除耳机这个商品  hdel  cart_1001 121

删除购物车全部商品 直接删除这个key  del cart_1001

获取购物车全部商品  hgetall cart_1001 

三.list 类型

1.常用的数据结构

stack(栈  先进后出) lpush+lpop

queue (队列  先进先出)  lpush+rpop

blocking mq(阻塞队列)  lpush+brpop  有元素就拿,没有元素一直阻塞等待直到拿出元素

2.微博和微信公众号消息流

 时间倒序  最新的消息在最上面 

一个用户对应一个list  向这个list lpush消息id 

比如一个大V发表了一个微博,向这个大V的粉丝的list 都push 这个消息的id(优化:可以先给在线的用户推送)

四.set类型

1.微信抽奖小程序

参与抽奖:就把用户id加入集合  sadd key userId

参看全部的抽奖用户:smembers key

开奖(抽取count名中奖者):srandmember key count (随机)

开奖的另一种情况(抽取一等奖一名 二等奖二名 三等奖三名): spop key count (与上面的区别是抽出来后会把这个用户id 在集合删掉)

2.微信微博点赞 如果有顺序的话可以用zset

点赞:sadd  like_msgId userId

取消点赞:srem like_msgId userId

检查用户是否点过赞:sismember like_msgId userId

获取点赞的用户列表:smembers like_msgId

获取点赞的用户数:scard like_msgId

 

3.集合操作实现微博微信的关注模型

 五.zset 类型 (排序)

1.排行榜 热搜

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值