Nosql - redis 的学习

14 篇文章 0 订阅

redis:

  1. 是非关系型数据库---

  2. 性能优秀,吞吐量 能达到 10万条/s 

  3. 为什么性能这么好的:  

    1. redis是直接操作内存的
    2. redis是单线程执行的,减少线程竞争与资源的占用(IO多路复用)
    3. redis命令简单: set key value,语法规则考究,存储的数据结构合理
    4. 使用nio的方式---设置固定槽点,每一个槽点针对某一种数据的请求,减少服务端的不必要开销

再就是基本指令的学习,没有捷径,只有熟能生巧

有五种数据存储结构: string  hash   list  set  zset

stringkey-value:适合做统计,比如页面访问总数
hash类似map --适合存储实体信息,比如 用户基本信息:name age height phone
list队列 ,比较适合做列表展示,访问记录/朋友圈消息展示
set集合,不能有重复,那就是查重的场景,抢红包/投票数统计
zsetscore:member ,附带一个数值,比较适合做排行榜,一些需要排序的场景

(1)多路 I/O 复用模型

多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。

这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了 Redis 具有很高的吞吐量。----出处

在使用redis的过程中需要注意的一些问题::

1

Q 1  .redis进行快照的时候,对于内存的使用也会达到当前redis占用的内存比,也就是如果现在redis使用了51% 的内存,执行了快照,内存使用就会达到  102% ,系统就会卡死 

A 1:那可以设定redis的内存使用阀值-redis.conf 中设置maxminmun =45% 

2

Q 2  ..而其实redis 在内存使用达到95% 的时候就会自动执行一个swap 操作,将一部分redis的内容存储到磁盘中,可想而知,在运行过程中,操作到那部分磁盘中的文件时必然慢的要死,影响用户体验----读操作: 内存-us级  磁盘 ms 级 ----

A 2 : 在设定redis内存使用阀值的情况下,在加一个内存到达阀值之后的redis使用内存自动清理策略-----

utl  从最少使用的开始删除/  ttl  从最近过期的删除  /random 从最近过期的里面随机删除 / none 不删除任何,使用swap磁盘化

3

Q 3  .在运行很长一段时间之后redis必然出现很多内存碎片,这时候最简单做法就是重启redis ,那是不是要先备份呢,可以rdb 快照,那就要注意上面的第一个问题了。或者是AOF 日志 -

A 3 :那要知道一点restart ,即使在开启aof的情况下,重启redis前不会自动执行aof的,需要手动先快照一份

一些测试信息:

Redis数据结构详解之List(二) - 张龙豪 - 博客园

操作spring 的redisTemplate ---API:

20道经典Redis面试题_CSDN砖家的博客-CSDN博客_redis面试题

Spring Boot Redis RedisTemplate 相关API介绍_东非大裂谷的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值