文档章节

Redis笔记

麦拂沙
 麦拂沙
发布于 2015/11/03 19:38
字数 763
阅读 55
收藏 1
点赞 0
评论 0

优点

  • 缓存(和数据库的关系,只能保证最终一致性,不能保证强一致性)
  • 高性能高并发
  • 可实现分布式锁
  • 单线程工作模型
    • 避免了频繁上下文切换
    • 采用非阻塞的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的值

常见故障

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

© 著作权归作者所有

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

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

mcy247 ⋅ 2017/12/07 ⋅ 0

spring cache + redis整合

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

疯狂的米老鼠 ⋅ 2017/12/11 ⋅ 0

【Redis笔记-11】Redis开启远程访问

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

xidiancoder ⋅ 2017/11/09 ⋅ 0

Redis 主从复制

单台redis会遇到单点故障的问题,为了解决redis的高可用,主从复制应该是学习的第二个步骤。本文想达到的目的是,一个master带一个slave,而slave又带了一个slave,这样的好处是,当master故...

BearCatYN ⋅ 2015/07/09 ⋅ 0

统计Redis中各种数据大小

本文参照 火丁笔记 的 如何统计Redis中各种数据的大小 ,该文章用php 和redis自带的 scan 和 debug信息来统计redis内存中各种数据结构(raw ,ziplist ,embstr等 )相对大小(序列化后的value...

robin-yao ⋅ 2015/05/03 ⋅ 3

OSChina 技术周刊第十六期 —— 每周技术精粹

每周技术抢先看,总有你想要的! 移动开发 【博客】[Android] AS 中 Gradle 配置运行浅析 服务端开发/管理 【软件】安全的即时聊天系统 Tox 【软件】HTTP 代理服务 gopee 【软件】流媒体平台...

OSC编辑部 ⋅ 2015/01/04 ⋅ 1

《Redis in action》读书笔记

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

Feng_Yu ⋅ 2014/09/27 ⋅ 0

win10 64位安装redis 及Redis Desktop Manager使用

1.下载 redis官方没有64位的Windows下的可执行程序,目前有个开源的托管在github上, 地址:https://github.com/ServiceStack/redis-windows 点击这个地方,下载文件并解压到自己的电脑目录下...

楠木楠 ⋅ 2016/12/10 ⋅ 0

Redis基础笔记(一)

Redis基础笔记 Redis基础笔记 事务 SORT 生存时间 任务队列 发布/订阅模式 Python中使用Redis 实际实例 管理 其他 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 简介 安装...

Airship ⋅ 2016/01/28 ⋅ 0

redis学习笔记

重新复习兄弟连redis视频课程,为了便于记忆,记录一下笔记: redis应用场景: 取最新N个数据。 排行榜,Top N. 精确设置过期时间的应用。 计数器应用,新浪微博主要应用。 Uniq操作,获取某...

刘德生 ⋅ 2014/04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部