redis知识点整理

redis

redis的配置详解,常见问题,常见优化,常见用法



一、redis基本概念

单线程、内存操作、epoll模型

tips: 为何采用单线程的模式?redis本身操作非常快,多线程的上下文切换代价大于单线程依序执行。如果想让redis更好的利用cpu的多核,可以采用多实例。下面会详细说。

二、redis基本配置

提前说明,因为配置非常多,但是很多都会使用默认的配置,这里只讲线上环境需要调整的参数。


bind 127.0.0.1 192.168.0.1  #绑定,可以指定多个 空格分开,未绑定表示所有主机都可以访问该服务
protected-mode yes  # 如果没有设置bind和密码,则只能进行本地访问。
loglevel notice # 类似与php apache等的错误调试日志等级,有四个等级,debug,verbose,notice,warging
logfile "/www/..." # 日志地址
######################################快照################################
## 两种方式
## 1.rdb: 只保存数据,写磁盘,效率,但是容易丢失数据
save 900 1
save 300 10
save 60 10000

## 2、aof: 保存执行的命令,数据安全,但是持久化文件冗余大
appendonly yes

######################################数据同步################################
######################################安全相关################################
requirepass 123456 #设置密码

################################### 内存管理 ####################################
maxmemory 3072mb # 最大的内存,超过之后会启动内存回收策略
1、volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。
2、volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。
3、volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。
4、allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。
5、allkeys-random:从数据集合中任意选择数据淘汰
6、no-enviction:禁止淘汰数据
# lru算法:最近最少算法。
#总结来说 :一般都是选择 2 和 1, 原因下面详解
maxmemory-policy volatile-ttl

三、redis优化

1、redis内存策略的选择

1、redis中的数据不是关键数据,关键代码中有一层保障,即redis数据失效后,会从数据库查找。
比较关键的是需要设置redis中key的过期时间,这样有利于内存的回收。
这里一般可以设置redis中的内存为服务器内存的45%,因为需要预留一半的内存用来复制数据(打开快照的情况下.),一般设置volatile-ttl。
如果设置了redis的内存为服务器内存的90%,一般设置allkeys-lru,当然前提是需要设置过期时间。
具体设置多少百分比,还是看应用的规模以及服务器的使用。如果一台服务器不是完全给redis用的,那么比例会更少。

2、info memory 查看redis的运行情况

used_memory_human: 占用内存
used_memory_rss_human: redis进程占用的内存
used_memory_peak_human: 峰值内存
mem_fragmentation_ratio: 碎片率,其实就是redis中的数据实际占用的内存 和 操作系统分配给redis的内存的占比。 理解下就知道,如果 < 1, 说明内存不够用,要发生磁盘交换了,需要优化;> 1,是正常的。> 1.5,理论上说是有问题,原因就是redis本身(不包括内存数据)占用的内存是不多的,所以也需要优化。
碎片率过大的原因: 数据频繁更新,因为数据被删除后,占用的内存不会马上被系统回收,所以会一直占用着。

四、redis的集群

简单做个了解,项目中暂时没有用到。因为单纯的一台服务器已经够用。

1.主从

单服务器多实例的集群

好处:读写分离,类似于mysql,理论上对于单线程的redis提升很大。
客户端连接一般的框架也支持。
还有一个好处是服务的可靠性。

方式:一是单纯的主从(一主多从)和 哨兵模式的主从(服务故障自动转移)
一般都是选择哨兵模式。
主写从读。因为一般读是比较多的,而从服务器又比较多。

2、集群

五、有用的经验

  1. hypelogLog 数据结构
    可以去重统计数量。
    比如不同用户点击商品的数量,网页的uv(去重统计点击数)。最大空间为12k。大约可以存储2^64 个数据。但是只存储数量。和set数据结构的区别,set也可以统计,但是它会存储所有的数据,每个数据大约15byte(字节),对于大数据量的set比如统计在线用户数,1000个人就是15k,一百万就是15M,而用hypelogLog只需要12k大小就够了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值