IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis总结 -> 正文阅读

[大数据]redis总结

redis的基础知识

非关系型数据库是什么?有哪些?

非关系型数据库是相对于关系型数据库而言,一般不遵循ACID原则,不适合存储 海量数据和较为复杂的数据。redis、mem redis是c语言开发的。 mem的value是没有类型的

redis的端口号是什么?

6379

redis的客户端启动命令

redis-cli

redis一共多少个库

16个库

切换库

select 数字

redis项目中使用场景?

分布式锁、限流器(手机号登录频次、短信发送频次、某业务功能的使用频次) app首页访问流量高峰,支付高峰。 将常用和主要的数据,比如用户登录信息存储。使用redis时,要考虑数据是否常用, 数据命中率是否高,如果命中率低就没必要写入redis。读多写少可以放redis。数据量 很大,比如几百M,没必要放入redis。

reids的优缺点有哪些?

优点:- 读写性能优异。redis读速度是11w次/s,写速度是8W次/s- 支持数据持久化。RDB和AOF- 支持事务。reids所有的操作都是原子性的,还支持操作后的原子性- 数据结构丰富- 支持主从复制,可以进行读写分离缺点:- 容易受物理内存的影响,不能做海量数据读写- 主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端ip- 主机宕机,会有部分数据不能及时同步到从机- 不支持在线扩容

使用redis可能会出现的问题有哪些?

  • 缓存雪崩

    同一时间访问缓存失败,大量请求都访问数据库,导致数据库压力很大。原因是缓存中 数据失效时间是相同的,并且redis恰好将这部分数据删除。解决办法是:将缓存时间加一个 随机值,这样就会大幅降低同一时间失效。

    如果是reids挂了,请求全部走数据库这种情况,解决办法是:实现redis的高可用,主从 架构;如果redis挂了,设置限流。redis重启后,进行持久化。

  • 缓存穿透 查询一个缓存中不存在的数据,此时就会走数据库,大量请求会导致缓存不命中。
    解决办法是:接口层增加校验,比如用户鉴权、参数校验;
    将不存在的key的值设置为null放入缓存,设置一个略短的过期时间,一般是30s;
    可以对单个ip访问做出访问上限;
    使用布隆过滤器提前拦截,布隆过滤器的原理是: 利用算法高效判断出key是否存在,不存在就直接return。

  • 双写一致性

redis 是单线程的还是多线程的?redis为什么这么快?

redis实例不是单线程的。
redis 单线程指的是网络请求模块使用一个线程,所以不需要考虑并发安全性。即一个线程处理所有网络请求,其他模块仍用了多个线程。
redis是基于Reactor模式开发了网络请求处理器,这个处理器是的消费是单线程的。redis 4新增了惰性删除是异步的, redis 6 新增了处理网络IO的多线程功能,redis 6 支持多线程主要在IO读写能力上,但是处理网络请求的执行命令的核心模块还是单线程。
redis 4之前单线程依然快的原因是:cpu不是redis的瓶颈,内存和带宽才是,基于内存操作、结构简单、IO多路复用、非阻塞IO、避免不必要的线程上下文切换,操作系统有一个内核的概念kernel,客户端连接先到达内核,redis进程和内核之间使用的是epoll,非阻塞的多路复用的概念。

epoll (IO模型)

计算机内核可以接收多个客户端连接,
socket 是阻塞的,会有一个线程去等待读取请求,没有获取请求就阻塞,BIO (blocking)
这样就造成了资源浪费,因此,内核中网络IO进行了改良,发展为NIO (NoBlocking),同步非阻塞时期,
最后是多路复用NIO,为了减少内核态和用户态之间的切换
Linux内核中网络IO的演变过程

redis为什么这么块?

早期数据存在磁盘上,磁盘的寻址是毫秒级别,内存的寻址是纳秒级别,因此磁盘比内存慢 reids是基于内存存储的非关系型数据库,不需要进行磁盘IO,比传统数据库要快 单线程,无锁竞争,没有CPU上下文切换

redis 分布式锁

set key value nx : 如果设置成功会返回true,如果设置失败会返回nil
是一个原子操作

redis的value的数据结构有哪些?

string
hash
list
set
sortedset
HyperLogLog
Geospaysh
Pub/Sub

string

type key : 查看key的类型
incrby key 22 : 字符串拼接 / 数字相加
decrby key 22 : 减法

incr 秒杀、抢购,可以规避对数据库的事务的操作,由redis 内存替代。微博中的点赞、评论数、好友数,看似不是特别重要的数据,不需要精准的可以使用redis, 关系到金额的需要染指事务。

bitmap

常用命令

setbit key len v
bitcount
bitpos
bitop

使用场景

  • 用户在线状态
  • 统计活跃用户
  • 用户签到
  • 统计用户在一定范围时间内的登陆天数,用户登录的时候登记,且支持随即窗口查询
    传统的做法是:在关系型数据库中创建一张用户登陆表,记录用户登录信息,如果数 据量比较大,在查询的时候,效率不会很高。因此需要优化。使用redis来处理。
    bitcount
  • 电商活动周,对于登录的用户送礼物,假设一共有注册会员2E,相同用户登录最多送一次礼物,需要备货多少?
    用户分为僵尸用户、忠诚用户、冷热用户, 因此要知道活跃用户量,才能避免过度备货,节省资金。
    比如 1号-3号,一共有多少,相同用户去重
setbit 20200101 a 1
setbit 20200102 a 1
setbit 20200102 b 1
bitop or destkey 20210101 20200102 
bitcount destkey 0 -1 

https://www.cnblogs.com/wuhaidong/articles/10389484.html
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:39:43  更:2022-03-04 15:43:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:43:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码