文档章节

Redis笔记

麦拂沙
 麦拂沙
发布于 2015/11/03 19:38
字数 763
阅读 56
收藏 1

优点

  • 缓存(和数据库的关系,只能保证最终一致性,不能保证强一致性)
  • 高性能高并发
  • 可实现分布式锁
  • 单线程工作模型
    • 避免了频繁上下文切换
    • 采用非阻塞的I/O多路复用机制(多个I/O流入队并复用同一个线程运行)

内存模型

Key指向五种内存模型

  • String:常用于缓存等
  • Hash:常用于原生结构性缓存等
  • List:可实现简单队列,可实现分页
  • Set:可用于与计算差并交集(比如双方喜好的计算),还具备去重特性
  • SortedSet(或称ZSet):可实现排行榜(增量操作较耗时,读取操作通过跳跃表实现了高性能)、延时任务,范围查询等

持久化策略

  • RDB快照策略
    • 在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
    • 有点:体积小、快照时资源消耗较少、还原速度快
    • 缺点:数据不完整、易丢失数据
  • AOF日志策略
    • 记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集
    • 后台可对 AOF 文件进行重写以缩减其体量
    • 优点:不易丢失数据
    • 缺点:日志时资源消耗较多、体积容易过大、还原速度较慢
  • RDB&AOF混合策略
    • Redis 重启时, 它会优先使用 AOF 文件来还原数据集,其次考虑RDB快照
  • 关闭策略
    • 不提供持久化及恢复支持

键值淘汰机制

  • 过期键值删除策略(键值过期时间记录在过期表中,过期键值不保证立刻释放。没有过期时间的键值近似为持久的)
    • 定期删除(定期渐进地查找过期的键值)
    • 惰性删除(读取键值时候检查是否过期)
  • 内存不足时的释放策略
    • 淘汰策略配置maxmemory-policy
      • noeviction:阻止新的写入报错
      • allkeys-lru:全量键值中移除最近最少使用key
      • allkeys-random:全量键值中随机移除某个key
      • volatile-lru:移除最少使用的带ttl的key
      • volatile-random:随机移除带ttl的key
      • volatile-ttl:移除过期时间更早的带ttl的key

常用操作

info  # 服务概况和统计信息
dbsize #当前库中key数量

monitor  #监控操作


#### 库操作 ####
select dbname #选库


#### 键操作 ####
keys key_pattern  #搜索匹配正则的key


#### 值操作 ####
type key #检查key值类型
del key #删除key值
flushdb #清空当前库下key的值
flushall #清空所有库下key的值

常见故障

  • 缓存雪崩
    • 大批量缓存同时失效或者缓存重建期间收到大并发请求,从而导致系统性能急剧下降
    • 可能原因:大量缓存采用了相同过期时间、机器重启等等
    • 解决方案:失效时间追加随机值,采用队列或加锁等方式来单线程更新缓存

© 著作权归作者所有

共有 人打赏支持
麦拂沙
粉丝 22
博文 111
码字总数 99706
作品 1
海淀
高级程序员
Lind.DDD.Repositories.Redis层介绍

之前已经发生了 大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席之地,作为当今最红...

mcy247
2017/12/07
0
0
spring cache + redis整合

谨以此做个笔记。 平时我们使用的redis无非是用作缓存以及分布式session,其他的作用就视项目需求而定了。 这里主要讲讲redis作为缓存的作用。 使用redis做缓存,可以选择单独使用,也可以和...

疯狂的米老鼠
2017/12/11
0
0
【Redis笔记-11】Redis开启远程访问

概要 操作 首先,运行Redis数据库 查询数据库状态 可以看到他们的ip是和127.0.0.1绑定的,也就是说只能本机访问了。 修改 配置文件 找到 , 改成 保存并重启Redis服务。 再次查看Redis数据库...

xidiancoder
2017/11/09
0
0
《Redis in action》读书笔记

https://www.gitbook.io/book/abcfy2/redis-in-action-reading-notes 最近在学习redis,正在看这本书,以笔记的形式记录下这本书,方便以后翻阅。 这本书介绍很不错,入门很值得参考,图文并...

Feng_Yu
2014/09/27
0
0
CentOS下Redis高可用安装笔记

(WJW)Redis高可用安装笔记 [x] 安装环境介绍: Master: T1 Slave: T2 VIP: 192.168.68.45 * [x] 安装Redis(Master,Slave) 注意: 安装redis前flushall的修改 查找文件,把 修改成: [x] Redis启动...

白石
2015/01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
32分钟前
0
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
5
2
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部