Redis-数据的极速之旅(一)
创始人
2024-12-14 03:32:58
0

Redis基础篇

  • Redis的自我介绍
    • 我的核心数据结构
        • 1.字符串(String)
        • 2.哈希(Hash)
        • 3.列表(List)
        • 4.集合(Set)
        • 5.有序集合(Sorted Set)
    • 高性能原理
        • 1.Redis为什么快?
        • 2.Redis线程形式
        • 3.Redis单线程如何支持高并发

Redis的自我介绍

Hellow! 想必大家多多少少都听过我Redis的大名,我最常被标注的标签 :缓存高性能低延迟 ,其实我也不想被贴上如此多的标签,能力越大背负就越多,日后的路希望与各位共勉。
我是一个开源内存数据结构存储系统,我可以存储多种数据结构,例如,字符串、散列表、列表、集合、有序集合等。至于我如何做到好评如潮的,后面我来给大家一 一 介绍,剖析自己。

我的核心数据结构

在这里插入图片描述

1.字符串(String)

是Redis中最基本的数据结构
使用场景:
缓存数据:

SET  key  value    //存入字符串键值对 MSET  key  value [key value ...]  //批量存储字符串键值对 SETNX  key  value   //存入一个不存在的字符串键值对 GET  key    //获取一个字符串键值 MGET  key  [key ...]   //批量获取字符串键值 DEL  key  [key ...]   //删除一个键 EXPIRE  key  seconds   //设置一个键的过期时间(秒) 

计数器

INCR  key    //将key中储存的数字值加1 DECR  key    //将key中储存的数字值减1 INCRBY  key  increment   //将key所储存的值加上increment 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 //防止程序意外终止导致死锁 
2.哈希(Hash)

集合是一个无序集合,通过哈希实现,可快速添加、删除和查找

存储对象信息

HMSET  user  1:name  zhangsan  1:age  18 HMSET  user  2:name  lisi      1:age  19 HMGET  user  1:name  1:age   

存储结果“”
在这里插入图片描述
缺点:
不适合存储大量数据,因为所有数据都在一个Key下
过期功能不能使用在field上,只能用在Key上

3.列表(List)

列表是简单的字符串列表,支持从两端插入和删除,适用消息队列等场景

消息队列

Blocking MQ(阻塞队列)= LPUSH + BRPOP Queue(队列)= LPUSH + RPOP  # 从列表左侧插入元素 LPUSH tasks "process_video" # 从列表右侧弹出元素 BPOP tasks  

时间线

LPUSH message:{用户id} 1 LPUSH message:{用户id} 2 LPUSH message:{用户id} 3 LPUSH message:{用户id} 4  LRANGE message:{用户id} 0 3 

缺点:
元素较多时,访问中间元素时间为O(n)
列表尾部添加和移除很快,头部操作慢

4.集合(Set)

集合是一个无序集合,它通过哈希表实现,具有快速添加、删除、和查找操作的特点

点赞收藏

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  { c } SUNION set1 set2 set3  { a,b,c,d,e } SDIFF set1 set2 set3  { a } 

优点:
元素唯一
集合间操作
缺点:
不支持排序
不能直接获取集合中的元素

5.有序集合(Sorted Set)

有序集合是将集合和散列表结合起来,给每个元素设置一个分数,然后根据分数排序
排行榜

//展示当日排行前十 ZREVRANGE  hotNews:20190819  0  9  WITHSCORES  

高性能原理

1.Redis为什么快?

因为Redis所有数据都存储在内存中,所有的运算都是内存级别的运算,并且我是单线程,避免了多线程导致的上下文切换带来的性能损耗。同样的因为单线程,所以在使用的时候要注意,如果执行一些耗时的指令,Redis可能造成卡顿~

2.Redis线程形式

Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。Redis有也有多线程的功能,比如持久化、异步删除、集群数据同步等

3.Redis单线程如何支持高并发

Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。

在这里插入图片描述

相关内容

热门资讯

记者获悉!大菠萝手游辅助,微信... 记者获悉!大菠萝手游辅助,微信随意玩辅助器有开挂吗,方案辅助方法(有挂攻略)-哔哩哔哩1、游戏颠覆性...
此事迅速冲上热搜!微信开心泉州... 此事迅速冲上热搜!微信开心泉州辅助器,原来真的是有辅助app(有挂方法)-哔哩哔哩1、很好的工具软件...
黑科技辅助挂!poker红龙辅... 黑科技辅助挂!poker红龙辅助,闲娱江西脚本,机巧辅助方法(有挂解惑)-哔哩哔哩1、完成闲娱江西脚...
日前!游戏老友地方有脚本吗,原... 日前!游戏老友地方有脚本吗,原来有挂辅助神器(有挂助手)-哔哩哔哩1、在游戏老友地方有脚本吗插件功能...
做出回应!拱趴游戏破解器,新5... 做出回应!拱趴游戏破解器,新518互游辅助器,指引辅助教程(有挂方式)-哔哩哔哩1、拱趴游戏破解器脚...
为了进一步!小程序能不能开挂,... 为了进一步!小程序能不能开挂,总是真的有辅助修改器(有挂技巧)-哔哩哔哩小薇(辅助器软件下载)致您一...
透视肯定!pokermaste... 透视肯定!pokermaster破解版,潮友会辅助器,妙计辅助app(有挂分析)-哔哩哔哩1、不需要...
近日!蜀山四川破解好友版辅助,... 近日!蜀山四川破解好友版辅助,一直是真的辅助挂(有挂教程)-哔哩哔哩1、蜀山四川破解好友版辅助公共底...
经核实!菠萝德普辅助器免费版在... 经核实!菠萝德普辅助器免费版在哪里,杭州都莱到底有没有挂,步骤辅助软件(真的有挂)-哔哩哔哩1.菠萝...
此事引发网友热议!上品游戏辅助... 此事引发网友热议!上品游戏辅助器,本来真的有辅助下载(有人有挂)-哔哩哔哩1、上品游戏辅助器辅助器安...