zoukankan      html  css  js  c++  java
  • Redis

    忙里偷闲啊...

      1 <?php
      2 /**
      3  * Description: Redis
      4  * Create date:2015-10-11 17:27
      5  * Author: zhaoyingnan
      6  **/
      7 
      8 /*
      9 __construct,__destruct,connect,pconnect,close,ping,echo,get,set,
     10 setex,psetex,setnx,getSet,randomKey,renameKey,renameNx,getMultiple,exists,delete,
     11 incr,incrBy,incrByFloat,decr,decrBy,type,append,getRange,setRange,getBit,
     12 setBit,strlen,getKeys,sort,sortAsc,sortAscAlpha,sortDesc,sortDescAlpha,lPush,rPush,
     13 lPushx,rPushx,lPop,rPop,blPop,brPop,lSize,lRemove,listTrim,lGet,
     14 lGetRange,lSet,lInsert,sAdd,sSize,sRemove,sMove,sPop,sRandMember,sContains,
     15 sMembers,sInter,sInterStore,sUnion,sUnionStore,sDiff,sDiffStore,setTimeout,save,bgSave,
     16 lastSave,flushDB,flushAll,dbSize,auth,ttl,pttl,persist,info,resetStat,
     17 select,move,bgrewriteaof,slaveof,object,bitop,bitcount,bitpos,mset,msetnx,
     18 rpoplpush,brpoplpush,zAdd,zDelete,zRange,zReverseRange,zRangeByScore,zRevRangeByScore,zCount,zDeleteRangeByScore,
     19 zDeleteRangeByRank,zCard,zScore,zRank,zRevRank,zInter,zUnion,zIncrBy,expireAt,pexpire,
     20 pexpireAt,hGet,hSet,hSetNx,hDel,hLen,hKeys,hVals,hGetAll,hExists,
     21 hIncrBy,hIncrByFloat,hMset,hMget,multi,discard,exec,pipeline,watch,unwatch,
     22 publish,subscribe,psubscribe,unsubscribe,punsubscribe,time,eval,evalsha,script,dump,
     23 restore,migrate,getLastError,clearLastError,_prefix,_serialize,_unserialize,client,scan,hscan,
     24 zscan,sscan,getOption,setOption,config,slowlog,getHost,getPort,getDBNum,getTimeout,
     25 getReadTimeout,getPersistentID,getAuth,isConnected,wait,pubsub,open,popen,lLen,sGetMembers,
     26 mget,expire,zunionstore,zinterstore,zRemove,zRem,zRemoveRangeByScore,zRemRangeByScore,zRemRangeByRank,zSize,
     27 substr,rename,del,keys,lrem,ltrim,lindex,lrange,scard,srem,
     28 sismember,zrevrange,sendEcho,evaluate,evaluateSha,
     29  */
     30 //PHP 中 Redis 的可操作的方法
     31 $ReRedis    =    new ReflectionClass('Redis');
     32 $arMethods    =    $ReRedis->getMethods();
     33 $arMethods    =    objarray_to_array($arMethods);
     34 //print_r($arMethods);
     35 function objarray_to_array($obj) {  
     36     $ret = array();  
     37     foreach ($obj as $key => $value) {  
     38         if (gettype($value) == "array" || gettype($value) == "object"){  
     39             $ret[$key] =  objarray_to_array($value);  
     40         }else{  
     41             $ret[$key] = $value;  
     42         }  
     43     }  
     44     return $ret;  
     45 }
     46 $i    =    1;
     47 foreach($arMethods as $arVal)
     48     echo $arVal['name'],',';
     49 
     50 /****************************** Redis 介绍 ************************************/
     51 //Redis,一款 内存高速缓存数据库,数据模型为 key-value
     52 //Redis 可持久化,(即它会将数据保存自硬盘中)保证了数据的安全
     53 //Redis 丰富的数据类型:string,list,hash,set,sorted set
     54 
     55 
     56 /****************************** Redis 和 Memcached比较 ************************/
     57 //    Redis 不仅仅支持简单的 key-value ,同时还提供list,set,hash等数据结构的存储
     58 //    Redis 支持 master-slave(主-从)模式应用
     59 //    Redis 支持数据的持久化,可以将内存中的数据村春在硬盘中,重启、断电的时候并不会丢失数据
     60 //    Redis 单个 value 的最大限制的 1GB,Memcached 只能保存 1MB
     61 
     62 
     63 /****************************** Redis 中对 key 的操作 *************************/
     64 /**
     65  * eixists key                    测试指定的 key 是否存在
     66  * del key1 key2 key3 ...        删除给定的 key
     67  * type    key                        返回给定的 key 的 value 类型
     68  * keys pattern                    返回匹配指定模式的所有的 key
     69  * rename oldkeyname newkeyname    改名字
     70  * dbsize                        返回当前数据库的 key 的数量
     71  * expire key seconds            为 key 设置过期时间
     72  * ttl key                        返回 key 的剩余过期时间
     73  * select db-index                选择数据库(0-15)
     74  * move key db-index            将 key 从当前数据库移动到指定的数据库
     75  * flushdb                        删除当前数据库中的所有的 key
     76  * flushall                        删除所有数据库中所有 key
     77  **/
     78 
     79 
     80 /****************************** Redis 中对 string 类型的操作 ********************/
     81 /**
     82  * set key value                设置 key 对应的值为 string 类型的  value
     83  * mset key1 value1 key2 value2 keyN valueN    一次性设置多个 key 的值
     84  * mget    key1 key2 keyN            一次性获取多个 key 的值
     85  * incr key                        对 key 的值进行自增操作,步进值为1,并返回新的值
     86  * decr key                        对 key 的值进行自减操作,步进值为1,并返回新的值
     87  * incrby key integer            同 incr ,但是步进值为指定的 integer ,并返回新的值
     88  * decrby key integer            同 decr ,但是步进值为指定的 integer ,并返回新的值
     89  * append key value                给指定的 key 对应的值追加 value
     90  * substr key start end            返回截取过的 key 对应的值,包括开始和结束的位置,下标从0开始
     91  **/
     92 
     93 
     94 /****************************** Redis 中对 list 类型的操作 ***********************/
     95 //list 类型是一个双向链表,通过 push,pop 操作从链表的头部或者尾部添加或删除元素。
     96 //应用的场景:获得最新登录的10个用户的信息
     97 /**
     98  * lpush key value                在 key 对应的 list 的头部添加 value 元素,返回 list 中元素的个数
     99  * rpush key value                在 key 对应的 list 的尾部添加 value 元素,返回 list 中元素的个数
    100  * rpop key                        在 key 对应的 list 的尾部删除一个元素,并返回该元素的内容
    101  * lpop key                        在 key 对应的 list 的头部删除一个元素,并返回该元素的内容
    102  * llen key                        返回 key 对应的 list 的中元素的个数,若不存在则为0,若不是 list 类型则报错
    103  * lrange key start end            返回 key 对应的 list 的中指定区间内的元素,包括开始和结束的位置,下标从0开始
    104  * ltrim key start key            截取 list,保留指定区间内的元素
    105  **/
    106 
    107 
    108 /****************************** Redis 中对 set 类型的操作 *************************/
    109 //set 无序集合,每个集合的元素是不会重复的,最多可以包含2的32次方个元素(交集、并集、差集)
    110 //应用场景:QQ好友推荐,你和张三的共同好友
    111 /**
    112  * sadd key member                添加一个 member 元素到 key 对应的 set 集合中,成功返回1,若元素已经存在,返回0
    113  * sren key member1 memberN        从 key 对应的 set 集合中删除给定的元素,成功返回1
    114  * scard key                    返回 key 对应的 set 集合中的元素个数
    115  * smembers key                    返回 key 对应的 set 集合中的所有元素,是无序的
    116  * sismember key member            判断 member 在 key 对应的 set 集合中是否存在,存在返回 1,否则为0
    117  * smove key1 key2 member        将 key1 对应的 set 集合中的 member 移动到 key2 对应的 set 集合中
    118  * sinter key1 key2 keyN        返回所有给定 key 对应的 set 集合的交集
    119  * sunion key1 key2 keyN        返回所有给定 key 对应的 set 集合的并集
    120  * sdiff key1 key2 keyN            返回所有给定 key 对应的 set 集合的差集
    121  **/
    122 
    123 
    124 /****************************** Redis 中对 sorted set 类型的操作 *******************/
    125 //sorted set 排序的集合,与 set 集合不同,它每个集合中的每个元素都是值、权重的组合
    126 //应用场景:排行榜
    127 /**
    128  * zadd key score member        添加元素到 key 对应的 set 集合,其中值为 member,权重为 score
    129  * zrem key member                删除 key 对应的 set 集合中指定的元素 member
    130  * zincrby key incr member        按照 incr 幅度增加 key 对应的 set 集合中 member 元素的 score 权重值
    131  * zrank key member                返回指定元素 member 在 key 对应的 set 集合中的排名下标,排名按 score 小到大,下标0开
    132  * zrevrank key member            返回指定元素 member 在 key 对应的 set 集合中的排名下标,排名按 score 大到小,下标0开
    133  * zrange key start end            返回 key 对应的 set 集合中指定区间的元素的值,排序安 score 小到大,下标0开,含始末
    134  * zrevrange key start end        返回 key 对应的 set 集合中指定区间的元素的值,排序安 score 大到小,下标0开,含始末
    135  * zcard key                    返回 key 对应的 set 集合中的元素个数
    136  * zscore key member            返回 key 对应的 set 集合中给定的值为 member 的元素的 score 的值
    137  * zremrangebyrank key min max    删除 key 对应的 set 集合中排名在给定区间的元素(按 score 小到大排序)
    138  **/
    139 
    140 
    141 /****************************** Redis 数据持久化 ************************************/
    142 /**
    143  * snap shotting 快照持久化
    144  *        默认开启了该功能,一次性将 Redis 中的全部数据保存一份在硬盘中,数据非常多的话并不适合频繁地执行该操作
    145  *        redis.conf
    146  *            快照持久化的备份频率(数据修改的频率高/低,则备份频率也高/低)
    147  *            save 900 1            #900 秒内如果超过 1 个 key 被修改,则发起一次快照保存
    148  *            save 300 10            #300 秒内如果超过 10 个 key 被修改,则发起一次快照保存 
    149  *            save 60 10000        #60 秒内如果超过 10000 个 key 被修改,则发起一次快照保存
    150  *            dbfilename dump.rdb    #备份的文件名称
    151  *            dir ./                #备份文件的保存路径
    152  *        手动发起一次快照持久化
    153  *            redis-cli -h 127.0.0.1 -p 6379 bgsave    #手动发起一次快照持久化
    154  **/
    155 
    156 /**
    157  * append only file AOF持久化
    158  *        本质:把用户执行的每个'写'指令都备份到文件中,还原数据的时候其实就是执行具体的指令
    159  *        默认没有开启,开启的时候会将 Redis 内的数据清空,使用之前先开启
    160  *        redis.conf
    161  *            appendonly no        #默认不开启
    162  *            appendfilename "appendonly.aof"    #备份文件的名称
    163  *            dir ./              #备份文件的保存路径
    164  *        开启 AOF 持久化时,应使用对应的配置文件重启 Redis
    165  *            redis-server redis.conf
    166  *        AOF 持久化的备份频率
    167  *            redis.conf
    168  *                # appendfsync always    #每次收到写指令就会立即备份,最安全,但最慢,开销大
    169  *                appendfsync everysec    #每秒钟强制备份一次,在性能和持久化方面做了折中,默认
    170  *                # appendfsync no        #完全依赖操作系统,性能最好,持久化没有保证,安全性最差
    171  *        为 AOF 备份文件做优化压缩处理
    172  *            例如将多个 incr 指令变为一个 set 指令
    173  *                redis-cli -h 127.0.0.1 -p 6379 bgrewriteaof   #优化压缩
    174  **/
  • 相关阅读:
    ue4 材质表达式分类
    UE4材质特别属生记录
    tangent space与object space
    better-scroll插件 api
    better-scroll 与 Vue 结合
    git 简介
    vue 插件
    前端小程序——js+canvas 给图片添加水印
    使用Node.js给图片加水印的方法
    Vue框架 周期
  • 原文地址:https://www.cnblogs.com/yingnan/p/4871863.html
Copyright © 2011-2022 走看看