最实用的 Redis总结,简单易懂,让你快速了解Redis。

  

1,redis是什么

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。

2.redis的应用场景有哪些

1,会话缓存(最常用)

2,消息队列,比如支付

3,活动排行榜或计数

4,发布,订阅消息(消息通知)

5,商品列表,评论列表等

6.执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存,这样,后面的请求就去缓存中读取,请求使得能够迅速响应。

7.在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用的的Redis的做一个缓冲操作,让请求先访问到的Redis的的,而不是直接访问数据库。

3. redis常见性能问题和解决方案:

(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件

(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次

(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内

(4) 尽量避免在压力很大的主库上增加从库

(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3…

这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

4,redis的持久化

redis持久有两种方式:快照(快照),仅附加文件(AOF)

快照(快照)

1,将存储在内存的数据以快照的方式写入二进制文件中,如默认dump.rdb中

2,保存900 1 

#900秒内如果超过1个Key被修改,则启动快照保 

仅附加文件(AOF)

1,使用AOF持久时,服务会将每个收到的写命令通过写函数追加到文件中(appendonly.aof)

2,AOF持久化存储方式参数说明

    appendonly yes  

           #开启AOF持久化存储方式 

    appendfsync always 

         #收到写命令后就立即写入磁盘,效率最差,效果最好

    appendfsync everysec

         #每秒写入磁盘一次,效率与效果居中

    appendfsync no 

         #完全依赖操作系统,效率最佳,效果没法保证

Redis优点

 1,运行在内存,速度快官方号称支持并发读11万次/s,并发写8万次/s,可以说是相当彪悍了。

2,数据虽在内存,但是提供了持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务

3,支持数据结构丰富(string(字符串),list(链表),set(集合),zset(sorted set - 有序集合))和Hash(哈希类型,md5加密出来的那个串)

5. redis的缺点

一)缓存和数据库双写一致性问题

(二)缓存雪崩问题

(三)缓存击穿问题

(四)缓存的并发竞争问题

6.单线程的redis为什么这么快

一)纯内存操作

(二)单线程操作,避免了频繁的上下文切换

(三)采用了非阻塞I/O多路复用机制

7.redis的回收策略 

在redis.conf中有一行配置

# maxmemory-policy volatile-lru

该配置就是配内存淘汰策略的(什么,你没配过?好好反省一下自己) 

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。应该没人用吧。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。推荐使用,目前项目在用这种。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。应该也没人用吧,你不删最少使用Key,去随机删。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。这种情况一般是把redis既当缓存,又做持久化存储的时候才用。不推荐

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。依然不推荐

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。不推荐

ps:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。

猜你喜欢

转载自blog.csdn.net/weixin_44421448/article/details/86295032
今日推荐