《redis入门指南 》读书笔记

前排提示 不适合大家学习用,只能用来自己复习

命令

字符串相关(可以保存二进制数据)

SET,GET,INCR,DECR,INCRBY,DECRBY,APPEND,STRLEN,MGET,MSET,GETBIT,SETBIT,BITOP

散列相关

就是Map,比较灵活,字段可加减
HSET HGET HMSET HMGET HGETALL HEXISTS: SET类可更新和插入,原来存在返回1,不存在返回0

HSETNX(原子操作): 如果字段存在不做任何操作
HINCRBY HDEL

列表类型

内部使用双向列表,只能保存字符串(2^32 - 1个元素)

LPUSH RPUSH LPOP RPOP LLEN LRNG LREM LINDEX LSET LTRIM RPOPLPUSH

集合类型

SADD SREM SMEMBERS SISMEMBER

SDIFF(SDIFFSTORE) A B = A - B

SINTER(SINTERSTORE) A B = A 交 B

SUNION(SUNIONSTORE) A B = A 并 B

SCARD SRANDMEMBER(正数不同,负数可能相同,桶链结构,随机桶再随机元素)

SPOP

有序集合

ZADD ZSCORE ZRANGE ZREVRANGE ZRANGEBYSCORE ZINCRBY(增加分数)

ZCARD ZCOUNT ZREMREANGEBYRANK ZREMREANGEBYSCORE ZRANK ZREVRANK

ZINTERSTORE 求并集

事务

MULTI 开启事务

EXEC 提交事务

没有事务回滚的功能

事务中有错误语法时事务无法提交成功,事务中有运行错误时正确的部分语句会提交成功

WATCH UNWATCH 监控key,有点像乐观锁

EXPIRE : 设置过期时间
TTL:返回剩余过期时间,单位秒
PERSIST:取消设置的过期时间
EXPIREAT PEXPIREAT
maxmemory-policy,设置缓存淘汰规则:

  • volatile-lru 限时数据lru
  • volatile-ttl 限时数据最短命
  • volatile-random 限时数据随机
  • allkeys-lru 所有数据lru
  • allkeys-random 所有数据随机
  • noeviction 不允许

SORT: 排序
SORT ALPHA

实现队列

BRPOP : 阻塞式右弹出,可以用于优先级队列

发布订阅:PUBLISH SUBSCRIBE UNSUBSCRIBE

管道通信技术

内存优化技术

  • 精简键名和键值
  • 优化内部编码
    OBJECT ENCODING 可以查看内部编码类型

内部使用 RedisObject 来保存键值信息

struct redisObject {
    type,       类型
    notused,    
    encoding,   数据结构
    lru,        
    refcount,
    *ptr        数据
}
String 类型的优化

默认使用sdshdr结构体(len, free, buf[]),如果保存的是数字则改用long

如果是0-9999的数字则会复用共享共间,如果配置了maxmemory时,则不会使用共享对象

散列优化

使用了ziplist和hashtable来保存
如果键数 < hash-max-ziplist-entries 且 每个键值的长度都小于 hash-max-ziplist-value,则会使用hashtable


图片.png

图片.png
列表优化

可能使用ziplist和linkedlist,使用list-max-ziplist-entries list-max-ziplist-value

集合类型

可以使用intset 和 hashtable
使用intset条件:元素都是整数而且个数小于set-max-intset-entries
intset 结构:

typedef struct intset {
   encoding,
   length,
   contents[]
}
有序集合类型

有可能是skiplist或者是ziplist
zset-max-ziplist-entries 和 zset-max-ziplist-value
当使用跳表时,会使用散列表来保存键到分数的信息

备份

RDB:
save 900 90 表示900秒内有90次写操作,就会备份
fork一个子进程,与父进程共享内存,父进程接受到写请求要改数据时会先把原数据复制一份给子进程
子进程进行复制

AOP:
在执行写操作时,会把redis协议内容写到AOP文件里,AOP文件可以设置定时优化(超过上一次优化后在大小百分比,最小优化大小)
由于磁盘30s缓存一次,可以指定每次写后刷一次缓存,每秒刷缓存,不主动刷缓存

复制

启动从库:redis-server --port 6380 --slaveof 127.0.0.1 6379
切换监听的主库:SLAVEOF

复制原理:

1)从库发送SYNC命令给主库

2)主库执行一次RBD备份,并缓存开启备份后的新请求命令

3)备份完成后把备份文件发给从库,并且把缓存的命令也发给从库

4)从库把收到的文件放到备份文件中,执行一次恢复的过程

serve-stale-data no : 从库备份时不响应请求

主库崩溃时从库选取方案:

SLAVEOF NO ONE 从库晋升为主库

安全

bind 绑定地址

requirepass 设置密码

masterauth 从库设置主库密码

rename-command 命令重命名

通信协议

简单协议:命令使用空格分开
统一请求协议:类似于字符串回复

五种回复:错误回复(-),数字回复(:) 状态回复(+) 字符串回复($) 多行字符串回复(*)

集群

主从:一主多从,主库禁用备份,从库可选开启
开启无硬盘复制:repl-diskless-sync yes
全量复制:基本RBD备份
增量复制:主库更新后把更新内容记录在队列中,从库断线重连时如果在队列中有从库最重的数据,则可以增量复制,主库还有一个ID,以便确认从库之前确实是跟主库同步的

哨兵模式

  • 从配置文件中找出要监控的主库
  • 建立两条链接,一条订阅主库的sentinel: hello 频道,另一个定时向主库发送INFO命令
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352