1-Redis核心数据结构
2021-06-05 11:42:50 1 举报
AI智能生成
Redis核心数据结构
作者其他创作
大纲/内容
Redis数据结构、性能
数据结构
1、字符串
原子加减
INCR key: 将key中储存的数字值加1
适用场景:文章阅读量每次加一
DECR key: 将key中储存的数字值减1
INCRBY key increment: 将key所储存的值加上increment
适用场景:INCRBY orderId 1000 redis批量生成序列号提升性能(放入内存中)
DECRBY key decrement: 将key所储存的值减去decrement
分布式锁
SETNX product:10001 true: 返回1代表获取锁成功
SETNX product:10001 true: 返回0代表获取锁失败
DEL product:10001: 执行完业务释放锁
SET product:10001 true ex 10 nx: 防止程序意外终止导致死锁
适用场景:spring session + redis实现session共享
2、hash
优缺点
优点
同类数据归类整合储存,方便数据管理
相比string操作消耗内存与cpu更小
相比string储存更节省空间
缺点
过期功能不能使用在field上,只能用在key上
Redis集群架构下不适合大规模使用(大规模使用会造成某一台压力过大)
应用场景
电商购物车1)以用户id为key2)商品id为field3)商品数量为value
购物车操作1)添加商品 hset cart:1001 10088 12)增加数量 hincrby cart:1001 10088 13)商品总数 hlen cart:10014)删除商品 hdel cart:1001 100885)获取购物车所有商品 hgetall cart:1001
3、List
常用数据结构
LRANGE msg:{关注人-ID} 0 4 微博微信最新消息
4、集合Set
抽奖小程序
微信抽奖小程序1)点击参与抽奖加入集合 SADD key {userlD}2)查看参与抽奖所有用户 SMEMBERS key\t 3)抽取count名中奖者 SRANDMEMBER key [count](元素不从key中删除) / SPOP key [count](元素从key中删除)
微博点赞、收藏、标签
1) 点赞 SADD like:{消息ID} {用户ID}2) 取消点赞 SREM like:{消息ID} {用户ID}3) 检查用户是否点过赞 SISMEMBER like:{消息ID} {用户ID}4) 获取点赞的用户列表 SMEMBERS like:{消息ID}5) 获取点赞用户数 SCARD like:{消息ID}
关注模型
SINTER -> 交集 (set1 交集 set2 交集 set3) 例:共同关注的人SUNION -> 并集 SDIFF -> 差集(set1 差集 set2 = {a} 差集 set3 = {a}) 例:可能认识的人
5、有序集合zset
Zset集合操作实现排行榜1)点击新闻ZINCRBY hotNews:20190819 1 热带你新闻2)展示当日排行前十ZREVRANGE hotNews:20190819 0 9 WITHSCORES 3)七日搜索榜单计算ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814... hotNews:201908194)展示七日排行前十ZREVRANGE hotNews:20190813-20190819 0 9 WITHSCORES
为什么这么快?
1、内存中
2、操作命令时单线程
3、多客户端的IO多路复用
redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到 文件事件分派器,事件分派器将事件分发给事件处理器。(简单的来说:可以同时接收多个命令,但是在执行命令的时候是单线程)。
0 条评论
回复 删除
下一页