高性能大数据h等多个文件redis笔记_第1页
高性能大数据h等多个文件redis笔记_第2页
高性能大数据h等多个文件redis笔记_第3页
高性能大数据h等多个文件redis笔记_第4页
高性能大数据h等多个文件redis笔记_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 redis主讲: 燕十八课时: 10课时官方论坛: 老师博客: 老师微博: 高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程学习目标:1:redis特点及安装2:redis键值操作3:redis数据类型string,link,set,order set, hash4:事务5:消息订阅6:持久化7:集群8:PHP-redis客户端9: 运维10: 仿微博实战高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程1.1

2、 redis特点介绍REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。1:数据结构丰富2:持久化3:支持简单事务4: 主从配置方便高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程1.2 redis安装不必configure1:make2:mak

3、e PREFIX=/usr/local/redis install3:开启服务./redis-server /path/to/redis.conf高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程1.3 redis连接redis的协议是基础文本的协议,(http,memcached也是)客户端的开发较为简便redis官方提供了C,java,C#,PHP,lua脚本的客户端我们在学习时,用到redis-cli 官方客户端及php-redis客户端在与redis-server同一目录下,redis-cli即是# /path/to/redis-cli 回车

4、高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程DEL key key .删除多个key返回真正被删除的key数量rename key newkey重命名key-newkey如果newkey存在,值被覆盖renamenx key newkey同rename,只是newkey存在时,不进行操作move key db移动key到另一个db,如果另一db有相同key,不做操作2.1 redis键操作命令高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程keys pattern支持*,?,匹配randomkey随

5、机返回key,但不删除exists key判断key是否存在,返回1/0type key判断key的类型返回string,set,zset,link,hashexpire key 用秒设置生命周期pexpire key 用毫秒设置生命周期persist key 使key变为永久ttl key 查询key的剩余生命周期(返回秒)pttl key 查询key的剩余生命周期(返回毫秒)对于不存在的key或过期key,返回-1redis2.8对于不存在的key返回-22.2 redis键操作命令高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.1 字符串

6、类型及期命令 SET SETNXSETEXPSETEXSETRANGEMSETMSETNXAPPENDGETMGETGETRANGEGETSETSTRLENDECRDECRBYINCRINCRBYINCRBYFLOATSETBITGETBITBITOPBITCOUNT高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.1 字符串-set命令1:SET key value ex 过期秒数 px 过期毫秒数 nx xxEX second :设置键的过期时间为 second 秒。SET key value EX second 效果等同于 SETEX

7、key second value 。PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。XX :只在键已经存在时,才对键进行设置操作高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.2 字符串-setrange命令SETRANGE key offset val

8、ue用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。如果offset过大,则原字符和偏移量之间的空白将用零字节(zerobytes, x00 )来填充。最大偏移量是 229-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.3 字符串mset命令mset k1 v1 k2 v21: 一次性设置多对键值2: 原子性3: 覆盖旧值4: 不想覆盖旧

9、值用 msetnxmsetnx k1 v1 k2 v2特点:不覆盖旧值高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.4 字符串命令-append APPEND key value如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。返回值:追加 value 之后, key 中字符串的长度。高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕

10、十八精品PHP教程3.2.5 字符串操作之getGET key返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil 。假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。可用版本:= 1.0.0时间复杂度:O(1)返回值:当 key 不存在时,返回 nil ,否则,返回 key 的值。如果 key 不是字符串类型,那么返回一个错误。高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.6 字符串之mgetMGET key key .返回所有(一个或多个)给定 key 的值。如果给定的某个

11、key 不存在,返回特殊值 nil高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.7GETRANGE key start end返回字符串的一部分,和PHP中substr一样(redis2.0以前该命令就叫substr)左-右 0 ,1,2.计数右-左 -1,-2,-3 .计数高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.8 getsetGETSET key newvalue设置新值,并返回旧值redis GETSET db mongodb # 没有旧值,返回 nil(nil)redi

12、s GET dbmongodbredis GETSET db redis # 返回旧值 mongodbmongodbredis GET dbredis高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程STRLEN key返回 key 所储存的字符串值的长度。key不存在是返回0key 存在但不是字符串类型时,返回一个错误。3.2.9 字符串操作之getset高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.10 字符串操作之getbitGETBIT key offset对 key 所储存的字符串值,

13、获取指定偏移量上的位(bit)。当 offset 比字符串值的长度大,或者 key 不存在时,返回 0(不能判断确实为0,还是offset不对)注意:位从左边,从0记数高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.11 字符串操作之setbitSETBIT key offset value设置或清除指定偏移量上的位(bit)为0/11:当 key 不存在时,自动生成一个新的字符串值。2:字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。3:offset 参数必须大于

14、或等于 0 ,小于 232 。4:返回值为该bit之前的值用此功能把a-A高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.2.12 字符串操作之bitopBITOP operation destkey key1 key2 .对key1,key2.keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND 、 OR 、 NOT 、 XOR注:NOT 操作时,key只能有1个高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.1 link链表-lpushLP

15、USH key value value .将一个或多个值 value 插入到列表 key 的表头(l指left)如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头:如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,返回值: 操作后的元素数量注:1:key 不存在,自动创建空列表并执行 LPUSH 操作。2:key 存在但不是列表类型时,返回一个错误。3: rpush key value 是把值插入到链表尾部,不再单述4: lpushx 在key不存在时,不自动创建链接,不再单述高端高端PHPPHP培训培训

16、 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.2 链表之lpopLPOP key移除并返回列表 key 的头元素。返回值:列表的头元素。当 key 不存在时,返回 nil注: rpop key 移除并返回列表key的尾元素,不单述高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.3 链表之blpopBLPOP key key . timeoutBLPOP 是列表的阻塞式(blocking)弹出原语。它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或

17、发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素并结束命令。注:1: timeout为0则不超时2: 此功能有什么用?brpop:阻塞弹出队列尾部的元素,不再单述高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.4 链表之llenLLEN key返回列表 key 的长度。注:key 不存在,返回 0key 不是列表类型,返回错误高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.5 链表之lrangeLRANGE key s

18、tart stop返回列表指定区间内的元素,区间以偏移量 start 和 stop 指定。左数从0开始,右数-1开始注:1:start大于length,或start位于stop右边,则LRANGE 返回一个空列表2:如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end 高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程3.3.5 链表之lremLREM key count value根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种:count 0 : 从表头开始向表

19、尾搜索,移除与 value 相等的元素,数量为 count 。count 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count stop的元素ZSCORE key member返回成员 member 的 score 值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。zrevrange key start stop withscores倒序排列后,返回start-stop的元素高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程ZRANGEBYSCORE key min

20、max WITHSCORES LIMIT offset count按分数(升续)排序,取min,max之间的值, 并偏移offset取count个zrevrangebyscore 不解释ZRANK key member返回member的排名,升序比较,从第0名开始zrevrank key member 不解释ZREMRANGEBYRANK key start stop按排名删除 start-stop名的元素zremrangebyscore key start,stop按分数删除start,stop之间的元素ZINTERSTORE destination numkeys key key . WE

21、IGHTS weight weight . AGGREGATE SUM|MIN|MAX求交集 ZUNIONSTORE destination numkeys key key . WEIGHTS weight weight .AGGREGATE SUM|MIN|MAX求并集 3.5.2 有序集合高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程HSET key field value将哈希表 key 中的域 field 的值设为 valuekey 不存在,则创建field 已存在,则覆盖。HSETNX key field value设置key 中的域

22、field 的值设置为 value,field 不存在时才有效HMSET key field1 value1 field2 value2 .设置多个域field/valueHGET key field返回key 中给定域 field 的值HMGET key field field .返回多个field的值 3.6.1 哈希(hash)操作高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程HGETALL key返回哈希表所有的域和值。HDEL key field field .删除指定域,返回成功删除的元素个数HLEN key返回hash表中的元素个数

23、HEXISTS key field判断指定域是否存在HINCRBY key field incrementfield 的值加上增量 increment 。HINCRBYFLOAT key field increment不解释hkeys 返回哈希表中所有键hvalues 返回哈希表中所有值 3.6.2 哈希(hash)操作高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程watch key1 key2 unwtach key1 key2multicommandcommand.discard/exec注意:如果命令格式有误,exec会报错如果命令格式不错

24、,只是逻辑错,exec不执行正确的命令-需要程序员去负责 4.1 事务操作高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 5.1 发布与订阅subscribe-频道-publishsubscribe news -订阅新闻频道publish news 内容-发布新闻内容适宜做在线聊天,消息推送高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 5.2 发布与订阅SUBSCRIBE channel channel .订阅给定的一个或多个频道的信息。UNSUBSCRIBE channel channel .指

25、示客户端退订给定的频道。如果没有频道被指定,也即是,一个无参数的 UNSUBSCRIBE 调用被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订PUNSUBSCRIBE pattern pattern .指示客户端退订所有给定模式。高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程持久化: 即把数据存储于断电后不会丢失的设备中,通常是硬盘.常见的持久化方式:主从:通过从服务器保存和持久化,如mongoDB的replication sets配置日志:操作生成相关日志,并通过日志来恢复数据couchDB对于数据内容,不修改,只追加,

26、则文件本身就是日志,不会丢失数据.6.1 持久化的方式高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程6.2 redis-之rdb快照持久化rdb的工作原理:每隔N分钟或N次写操作后, 从内存dump数据形成rdb文件,压缩放在备份目录注:红色部分可通过参数来配置高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。save 300 10 #必须是300秒之后至少10个关键字发生变化。save 60 10

27、000 #必须是60秒之后至少10000个关键字发生变化。stop-writes-on-bgsave-error yes #后台存储错误停止写。rdbcompression yes #使用LZF压缩rdb文件。rdbchecksum yes #存储和加载rdb文件时校验。dbfilename dump.rdb #设置rdb文件名。dir ./ #设置工作目录,rdb文件会写入该目录。6.3 rdb快照相关参数高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程6.4 rdb的缺陷断电在2个保存点之间,断电,将会丢失1-N分钟的数据出于对持久化的更精细要

28、求,redis增添了aof方式 append only file高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程6.5 aof的原理redis主进程后台日志进程aof文件setappend.写操作1:每个命令重写一次aof?2:某key操作100次,产生100行记录,aof文件会很大,怎么解决?高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程appendonly no #是否仅要日志appendfsync no # 系统缓冲,统一写,速度快appendfsync always # 系统不缓冲,直接写,慢

29、,丢失数据少appendfsync everysec #折衷,每秒写1次no-appendfsync-on-rewrite no #重写aof时同步最新数据auto-AOF-rewrite-percentage 100 当前aof文件是上次重写是大N%时重写auto-AOF-rewrite-min-size 64mb aof重写至少要达到的大小 6.6 aof日志持久化高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 7.1 集群的作用1: 主从备份 防止主机宕机2: 读写分离,分担master的任务3: 任务分离,如从服分别分担备份工作与计算工作

30、高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 7.2 redis集群masterslave1slave2masterslave1slave2第2种方式的好处:master宕机后,可以直接切换到slave1高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程7.3 主从通信过程masterslavesync自动dump出rdb缓冲的aofreplicationFeedSlaves高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 7.4 redis集群配置Mas

31、ter配置:1:关闭rdb快照(备份工作交给slave)2:可以开启aofslave配置:1: 声明slave-of2: 配置密码如果master有密码3: 某1个slave打开 rdb快照功能4: 配置是否只读slave-read-only高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 7.5 redis主从复制的缺陷缺陷:每次salave断开后,(无论是主动断开,还是网络故障)再连接master都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍.所以要记住-多台slave不要一下都启动起来,否则master可能IO

32、剧增高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 8.1 PHP-redis客户端 编译:# /usr/local/php/bin/phpize# ./configure -with-php-config=/usr/local/php/bin/php-config # make & make install引入:vim php.iniextension=/php/extension/path/redis.so高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 9.1 运维常用的server端命

33、令TIME 查看时间戳与微秒数DBSIZE 查看当前库中的key数量BGREWRITEAOF 后台进程重写AOFBGSAVE 后台保存rdb快照SAVE 保存rdb快照LASTSAVE 上次保存时间SLAVEOF 设为slave服务器FLUSHALL 清空所有dbFLUSHDB 清空当前dbSHUTDOWN|save|nosave 断开连接,关闭服务器SLOWLOG 显示慢查询INFO 显示服务器信息CONFIG GET 获取配置信息CONFIG SET 设置配置信息MONITOR 打开控制台SYNC 主从同步CLIENT LIST 客户端列表CLIENT KILL 关闭某个客户端CLIENT SETNAME 为客户端设置名字CLIENT GETNAME 获取客户端名字高端高端PHPPHP培训培训 高级架构班高级架构班! !zixue.it 燕十八精品PHP教程 9.2 运维时的观察参数1: 内存# Memoryused_memory:859192 数据结构的空间used_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论