你练的哪门子功夫?redis武林大会之江湖大赏(一)

前序

古言相传:有分布式的地方,就有redis。redis问世以来,便以其快捷的速度、多样的数据结构和优良的性能,在key-value数据库争霸中攻城拔寨,深受众多绿林好猿的喜爱。而代码界的武林大会也因redis年年的精彩表现,被逐渐冠以‘redis武林大会’。。。。。。。

今日所叙,乃redis常用数据结构

正文

1.String应用场景

计数器

incr article:readcount:{文章id}

GET article:readcount:{文章id}

2.hash应用场景

2.1对象缓存

HMSET user {userId}:name zhangjiang {userId}:balance 1888

HMSET user 1:name zhangjiang 1:balance 1888

2.2电商购物车

添加商品 hset cart:1001 10088 1

增加数量 hincrby cart:1001 10088 1

2.3优点

同类数据归类存储

2.4缺点

过期功能不能使用在filed上,只能在key上

3.list数据结构

stack=LPUSH+LPOP=FIFO

queue = LPUSH+RPOP

Blocking Queue=LPUSH+BRPOP

4.list应用场景

4.1大V1发微博,消息ID为10018

LPUSH msg:{zhangjiang-ID} 10018

4.2大V2发微博,消息ID为10086

LPUSH msg:{zhangjiang-ID} 10086

4.3查最新微博消息

LRANGE msg:{zhangjiang-ID} 0 4

5. set应用场景

5.1微信抽奖小程序

点击参与抽奖加入集合sadd key userId

查看所有抽奖用户smembers key

抽取中奖者sandmember

5.2微信点赞收藏标签

点赞sadd like:{消息ID} {用户ID}

检查用户是否点赞过sismember like:{消息ID} {用户ID}

获取点赞用户列表smsmbers like:{消息ID}

6.set集合操作

sinter set1 set2 set3  -> {c}

setdiff set1 set2 set3 -> {d}

微博关注模型

zhangjiang关注的人

zhangjiangSet -> {rongweizhan,wangyongfeng}

liujiaxin关注的人

liujiaxinSet -> {rongweizhan,sunchunmei}

zhangjiang和liujiaxin共同关注的人

SINTER zhangjiangSet liujiaxinSet  -->  {rongweizhan}

集合操作实现电商商品筛选

SADD brand:huawei  P40

SINTER brand:huawei

7.ZSET应用场景

7.1点击新闻

ZINCRBY  hotNews:20200101 1 守护香港

7.2七日搜索榜单计算

ZUNIONSTORE hotNews:20200101-220200107  7

8.redis的单线程和高性能

redis单线程为什么这么快

基于纯内存操作;底层利用epoll实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。

9.其他高阶命令

keys *全量遍历键,不推荐

scan渐进式查询

scan  cursor    游标  match   匹配串(正则)  count   数量

scan  0  match   key99*  count  3

 

posted @ 2020-11-04 17:09  powerZhangFly  阅读(60)  评论(0)    收藏  举报