你练的哪门子功夫?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

浙公网安备 33010602011771号