当前位置:Gxlcms > PHP教程 > Redis,redis入门指南_PHP教程

Redis,redis入门指南_PHP教程

时间:2021-07-01 10:21:17 帮助过:12人阅读

Redis,redis入门指南


忙里偷闲啊...

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1059459.htmlTechArticleRedis,redis入门指南 忙里偷闲啊... 1 ? php 2 /* * 3 * Description: Redis 4 * Create date:2015-10-11 17:27 5 * Author: zhaoyingnan 6 * */ 7 8 /* 9 __construct,__destruct,c...

人气教程排行