Redis核心数据结构与高性能原理
一、Redis的单线程和高性能
Redis是单线程吗?
Redis 单线程为什么还能这么快?
Redis 单线程如何处理那么多的并发客户端连接?
二、高级命令
keys:全量遍历键:
scan:渐进式遍历键:
Info:查看redis服务运行信息:
三、五种数据结构
1.字符串string
应用场景:
- 计数器:
INCR article:readcount: id ;GET article:readcount: id
- Web集群session共享:
spring session + redis实现session共享
- 分布式系统全局序列号:
INCRBY orderId 1000
2.哈希hash
应用场景:
1.对象缓存:
HMSET user {userId}:name A {userId}:balance 1888;
HMSET user 1:name A 1:balance 1888 ; HMGET user 1:name 1:balance
2.电商购物车
1)以用户id为key
2)商品id为field
3)商品数量为value
购物车操作
添加商品 hset cart:1001 10088 1
增加数量 hincrby cart:1001 10088 1
商品总数 hlen cart:1001
删除商品 hdel cart:1001 10088
获取购物车所有商品 hgetall cart:1001
优缺点:
优点
1)同类数据归类整合储存,方便数据管理
2)相比string操作消耗内存与cpu更小
3)相比string储存更节省空间
缺点
1)过期功能不能使用在field上,只能用在key上
2)Redis集群架构下不适合大规模使用
3.列表list
应用场景:
1.常用数据结构
Stack(栈) = LPUSH + LPOP
Queue(队列)= LPUSH + RPOP
Blocking MQ(阻塞队列)= LPUSH + BRPOP
2.微博消息和微信公号消息
A关注了C,B等大V
1)C发微博,消息ID为10018 LPUSH msg:{A-ID} 10018
2)B发微博,消息ID为10086 LPUSH msg:{A-ID} 10086
3)查看最新微博消息 LRANGE msg:{A-ID} 0 4
4.集合set
应用场景:
1.微信抽奖小程序
1)点击参与抽奖加入集合 SADD key {userlD}
2)查看参与抽奖所有用户 SMEMBERS key
3)抽取count名中奖者 SRANDMEMBER key [count] / SPOP key [count]
2.微信微博点赞,收藏,标签
1) 点赞 SADD like:{消息ID} {用户ID}
2) 取消点赞 SREM like:{消息ID} {用户ID}
3) 检查用户是否点过赞 SISMEMBER like:{消息ID} {用户ID}
4) 获取点赞的用户列表 SMEMBERS like:{消息ID}
5) 获取点赞用户数 SCARD like:{消息ID}
3.集合操作实现微博微信关注模型
1) A关注的人: ASet-> {C, E}
2) B关注的人: BSet--> {A, D, C, E}
3) C关注的人: CSet-> {A, B, D, E,F)
4) A和B共同关注: SINTER ASet BSet--> {C, E}
5) A关注的人也关注B: SISMEMBER CSet B ;SISMEMBER ESet B
6) A可能认识的人: SDIFF BSet ASet->(A, D}
4.集合操作实现电商商品筛选
1) SADD brand:huawei P40
2) SADD brand:xiaomi mi-10
3) SADD brand:iPhone iphone12
4) SADD os:android P40 mi-10
5) SADD cpu:brand:intel P40 mi-10
6) SADD ram:8G P40 mi-10 iphone12
7) SINTER os:android cpu:brand:intel ram:8G -> {P40,mi-10}
5.有序集合zset
应用场景:
1.Zset集合操作实现排行榜
1)点击新闻 ZINCRBY hotNews:20190819 1 守护香港
2)展示当日排行前十 ZREVRANGE hotNews:20190819 0 9 WITHSCORES
3)七日搜索榜单计算 ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814... hotNews:20190819
4)展示七日排行前十 ZREVRANGE hotNews:20190813-20190819 0 9 WITHSCORES

浙公网安备 33010602011771号