<span> 1</span> <?php <span>if</span> (!<span>define</span>('BASEPATH')) <span>exit</span>('直接のスクリプトアクセスは許可されていません'<span>);
</span><span> 2</span><span>クラス</span><span> マイレディス
</span><span> 3</span><span>{
</span><span> 4</span><span>//</span><span>redis全て既知コマンド:
</span><span> 5</span><span> //append,auth,bgrewriteaof,bgsave,bitcount,bitop,blpop,brpop,brpoplpush,client-kill,client-list,client-getname, client-setname,config-get,config-set,config -resetstat、dbsize、debug-object、debug-segfault、decr、decrby、del、discard、dump、echo、eval、evalsha、exec、exists、expire、expireat、flushall、flushdb、get、getbit、getrange、getset、hdel ,hexists,hget, hgetall,hincrby,hincrbyfloat,hkeys,hlen,hmget,hmset,hset,hsetnx,hvals,incr,incrby,incrbyfloat,info,keys,lastsave, lindex,linsert,llen,lpop,lpush,lpushx,lrange 、lrem、lset、ltrim、mget、移行、監視、移動、mset、msetnx、multi、object、persist、pexpire、pexpireat、pfadd、pfcount、pfmerge、ping、psetex、psubscribe、pttl、publish、punsubscribe、quit、randomkey ,rename,renamenx,restore, rpop,rpoplpush,rpush,rpushx,sadd,save,scard,script-exists,script-flush,script-kill,script-load,sdiff,sdiffstore, select,set,setbit,setex,setnx ,setrange,シャットダウン,sinter,sinterstore,sismember,slaveof,slowlog,smembers,smove,sort,spop,srandmember,srem,strlen,subscribe,sunion,sunionstore,sync,time,ttl,type,unsubscribe,unwatch,watch,zadd 、zcard、zcount、zincrby、zinterstore、zrange、zrangebyscore、zrank、zrem、zremrangebyrank、zremrangebyscore、zrevrange、zrevrangebyscore、zrevrank、zscore、zunionstore、pubsub、config-rewrite、client-pause、hscan、scan、sscan、zscan</span><span> 6</span><span> 7</span><span>プライベート</span><span>静的</span><span>$redis</span><span>;
</span><span> 8</span><span> 9</span><span>public</span><span>function</span> __construct(<span>$arConfig</span> = <span>array</span>('host'=>'127.0.0.1', 'port'=> 6379<span>))
</span><span> 10</span><span> {
</span><span> 11</span><span>$this</span>->host = <span>$arConfig</span>['host'<span>];
</span><span> 12</span><span>$this</span>->port = <span>$arConfig</span>['port'<span>];
</span><span> 13</span> self::<span>$redis</span> = <span>new</span><span> Redis();
</span><span> 14</span> self::<span>$redis</span>->connect(<span>$this</span>->ホスト, <span>$this</span>-><span>ポート);
</span><span> 15</span><span>return</span> self::<span>$redis</span><span>;
</span><span> 16</span><span> }
</span><span> 17</span><span> 18</span><span>public</span><span>function</span> __call(<span>$sMethod</span>, <span>$arParam</span><span>)
</span><span> 19</span><span> {
</span><span> 20</span><span>return</span><span>call_user_func_array</span>(<span>array</span>(self::<span>$redis</span>, <span>$sMethod</span>), <span>$arParam</span><span>);
</span><span> 21</span><span> }
</span><span> 22</span><span> 23</span><span>/*</span><span>****************** キー ******************* *</span><span>*/</span><span>24</span><span>25</span><span>/*</span><span>*
</span><span> 26</span><span> * すべての記号は、所定のモード パターンに適合するキーを選択します。
</span><span> 27</span><span> * KEYS * データベース内のすべてのキーを照合します。
</span><span> 28</span><span> * KEYS h?llo 適合 hello 、 Hallo 、 hxllo など。
</span><span> 29</span><span> * KEYS h*llo 適合 hlo と heeeeello など。
</span><span> 30</span><span> * キー h[ae]llo は hello と hello に一致しますが、hillo は一致しません。
</span><span> 31</span><span> *特殊記号用に区切られています。
</span><span> 32</span><span> * @author zhaoyingnan 2015-10-16 17:33
</span><span> 33</span><span> * @param string $sPattern 合わせモード
</span><span> 34</span><span> * @return 配列
</span><span> 35</span><span> *</span><span>*/</span><span> 36</span><span>パブリック</span><span>関数</span>キー(<span>$sPattern</span> = '*'<span>)
</span><span> 37</span><span> {
</span><span> 38</span><span>//</span><span>echo $sPattern;</span><span> 39</span><span>return</span> self::<span>$redis</span>->keys(<span>$sPattern</span><span>);
</span><span> 40</span><span> }
</span><span> 41</span><span> 42</span><span>/*</span><span>*
</span><span> 43</span><span> * 戻りキーが存在するかどうか。</span><span> 44</span><span> * @author zhaoyingnan 2015-10-16 17:40
</span><span> 45</span><span> * @param string $sKey 検出されるキー
</span><span> 46</span><span> * @return bool
</span><span> 47</span><span> *</span><span>*/</span><span> 48</span><span>public</span><span>関数</span>が存在します(<span>$sKey</span><span>)
</span><span> 49</span><span> {
</span><span> 50</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 51</span><span>return</span> self::<span>$redis</span>->exists(<span>$sKey</span><span>);
</span><span> 52</span><span> }
</span><span> 53</span><span> 54</span><span>/*</span><span>*
</span><span> 55</span><span> * キーの有効期限を設定します。キーの有効期限が切れた場合、キーは自動的に削除されます。有効期限が設定されたキーは揮発性と呼ばれます。
</span><span> 56</span><span> * キーの有効期限が切れる前にキーの有効期限を再更新したり、PERSIST コマンドを使用してキーの有効期限を削除したりできます。
</span><span> 57</span><span> * @author zhaoyingnan 2015-10-16 17:46
</span><span> 58</span><span> * @param string $sKey キー
</span><span> 59</span><span> * @param int $iSecond ライフタイム (秒)
</span><span> 60</span><span> * @return bool
</span><span> 61</span><span> *</span><span>*/</span><span> 62</span><span>public</span><span>関数</span>期限切れ(<span>$sKey</span>, <span>$iSecond</span> = 60<span>)
</span><span> 63</span><span> {
</span><span> 64</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 65</span><span>return</span> self::<span>$redis</span>->expire(<span>$sKey</span>, <span>$iSecond</span><span>);
</span><span> 66</span><span> }
</span><span> 67</span><span> 68</span><span>/*</span><span>*
</span><span> 69</span><span> * このコマンドは EXPIRE コマンドに似ていますが、キーの生存時間を EXPIRE コマンドのような秒単位ではなくミリ秒単位で設定します。
</span><span> 70</span><span> * @author zhaoyingnan 2015-10-19 16:00
</span><span> 71</span><span> * @param string $sKey キー
</span><span> 72</span><span> * @param int $iSecond ライフタイム (秒)
</span><span> 73</span><span> * @return bool
</span><span> 74</span><span> *</span><span>*/</span><span> 75</span><span>public</span><span>function</span> pexpire(<span>$sKey</span>, <span>$iミリ秒</span> = 60000<span>)
</span><span> 76</span><span> {
</span><span> 77</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 78</span><span>return</span> self::<span>$redis</span>->pexpire(<span>$sKey</span>, <span>$iミリ秒</span><span>);
</span><span> 79</span><span> }
</span><span> 80</span><span> 81</span><span>/*</span><span>*
</span><span> 82</span><span> * EXPIREAT の機能は EXPIRE と似ており、両方ともキーの生存時間を設定するために使用されます。違いは、EXPIREAT コマンドで受け入れられる時間パラメータが UNIX タイムスタンプであることです。
</span><span> 83</span><span> * @著者zhaoyingnan 2015-10-16 18:03
</span><span> 84</span><span> * @param string $sKey キー
</span><span> 85</span><span> * @param int $iUnixtimestamp UNIX タイムスタンプ (秒)
</span><span> 86</span><span> * @return bool
</span><span> 87</span><span> *</span><span>*/</span><span> 88</span><span>public</span><span>function</span>expirate(<span>$sKey</span>, <span>$iUnixtimestamp</span><span>)
</span><span> 89</span><span> {
</span><span> 90</span><span>if</span>(!<span>$sKey</span> || !<span>$iUnixtimestamp</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 91</span><span>return</span> self::<span>$redis</span>->expireat(<span>$sKey</span>, <span>$iUnixtimestamp</span><span>);
</span><span> 92</span><span> }
</span><span> 93</span><span> 94</span><span>/*</span><span>*
</span><span> 95</span><span> * PEXPIREAT このコマンドは EXPIREAT コマンドに似ていますが、キーの有効期限の UNIX タイムスタンプを EXPIREAT のような秒単位ではなくミリ秒単位で設定します。
</span><span> 96</span><span> * EXPIREAT の機能は EXPIRE と似ており、両方ともキーの生存時間を設定するために使用されます。違いは、EXPIREAT コマンドで受け入れられる時間パラメータが UNIX タイムスタンプであることです。</span><span> 97</span><span> * @著者 zhaoyingnan 2015-10-16 18:03
</span><span> 98</span><span> * @param string $sKey キー
</span><span> 99</span><span> * @param int $iMilliseconds UNIX タイムスタンプ (ミリ秒)
</span><span> 100</span><span> * @return bool
</span><span> 101</span><span> *</span><span>*/</span><span> 102</span><span>public</span><span>function</span> pexpireat(<span>$sKey</span>, <span>$iミリ秒</span><span>)
</span><span> 103</span><span> {
</span><span> 104</span><span>if</span>(!<span>$sKey</span> || !<span>$iミリ秒</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 105</span><span>return</span> self::<span>$redis</span>->pexpireat(<span>$sKey</span>, <span>$iミリ秒</span><span>);
</span><span> 106</span><span> }
</span><span> 107</span><span> 108</span><span>/*</span><span>*
</span><span> 109</span><span> * 指定されたキーの残りの有効期間 (TTL、有効期間) を秒単位で返します。
</span><span> 110</span><span> * @author zhaoyingnan 2015-10-16 17:52
</span><span> 111</span><span> * @param string $sKey キー
</span><span> 112</span><span> * @return int キーが存在しない場合は、-2を返します。キーは存在するが、残りのライフタイムが設定されていない場合は、-1 が返されます。それ以外の場合は、キーの残りの有効期間を秒単位で返します。
</span><span> 113</span><span> *</span><span>*/</span><span> 114</span><span>public</span><span>function</span> ttl(<span>$sKey</span><span>)
</span><span> 115</span><span> {
</span><span> 116</span><span>if</span>(!<span>$sKey</span>)<span>return</span> -2<span>;
</span><span> 117</span><span>return</span> self::<span>$redis</span>->ttl(<span>$sKey</span><span>);
</span><span> 118</span><span> }
</span><span> 119</span><span> 120</span><span>/*</span><span>*
</span><span> 121</span><span> * このコマンドは TTL コマンドに似ていますが、鍵の残りの有効期間を TTL コマンドのような秒単位ではなくミリ秒単位で返します。
</span><span> 122</span><span> * @author zhaoyingnan 2015-10-19 16:06
</span><span> 123</span><span> * @param string $sKey キー
</span><span> 124</span><span> * @return int キーが存在しない場合は、-2 を返します。キーは存在するが、残りのライフタイムが設定されていない場合は、-1 が返されます。それ以外の場合は、キーの残りの有効期間を秒単位で返します。
</span><span> 125</span><span> *</span><span>*/</span><span> 126</span><span>public</span><span>function</span> pttl(<span>$sKey</span><span>)
</span><span> 127</span><span> {
</span><span> 128</span><span>if</span>(!<span>$sKey</span>)<span>return</span> -2<span>;
</span><span> 129</span><span>return</span> self::<span>$redis</span>->pttl(<span>$sKey</span><span>);
</span><span> 130</span><span> }
</span><span> 131</span><span> 132</span><span>/*</span><span>*
</span><span> 133</span><span> * 現在のインスタンスからターゲット インスタンスの指定されたデータベースにキーをアトミックに転送します。転送が成功すると、キーはターゲット インスタンスに表示されることが保証され、現在のインスタンスのキーは削除されます。 。
</span><span> 134</span><span> * このコマンドはアトミック操作であり、実行すると、移行の成功、移行の失敗、またはタイムアウトのいずれかの結果が発生するまで、移行の 2 つのインスタンスがブロックされます。
</span><span> 135</span><span> * @著者 zhaoyingnan 2015-10-16 18:24
</span><span> 136</span><span> * @param string $sHost ターゲット IP
</span><span> 137</span><span> * @param int $iPort ポート
</span><span> 138</span><span> * @param string $sKey 操作対象のキー
</span><span> 139</span><span> * @param int $iDb 対象インスタンスのデータベース番号
</span><span> 140</span><span> * @param int $iTimeout タイムアウト パラメーターはミリ秒形式で、現在のインスタンスとターゲット インスタンス間の通信間の最大間隔を指定します。これは、タイムアウト ミリ秒以内に操作を完了する必要はなく、データ送信時間がこのタイムアウト値を超えてはいけないことを意味します。</span><span> 141</span><span> * @return bool 注: 指定されたキーがターゲット インスタンスの指定されたデータベースに存在する場合、現在のインスタンスのキーは削除されておらず、ターゲット インスタンスにも移動されていません。ターゲット インスタンスのキーはオリジナルのままです
</span><span> 142</span><span> *</span><span>*/</span><span> 143</span><span>public</span><span>関数</span> 移行(<span>$sHost</span>, <span>$iPort</span>, <span>$sKey</span>, <span>$iDb</span>, <span>$iタイムアウト</span><span>)
</span><span> 144</span><span> {
</span><span> 145</span><span>if</span>(!<span>$sHost</span> || !<span>$iPort</span> || !<span>$sKey</span> || !<span>$iDb</span> || !<span>$iTimeout</span>)<span>return</span><span>FALSE </span><span>;
</span><span> 146</span><span>return</span> self::<span>$redis</span>->merge(<span>$sHost</span>, <span>$iPort</span>, <span>$sKey</span>, <span>$iDb</span>, <span>$iTimeout</span><span>);
</span><span> 147</span><span> }
</span><span> 148</span><span> 149</span><span>/*</span><span>*
</span><span> 150</span><span> * 現在のデータベースのキーを指定されたデータベース db に移動します。
</span><span> 151</span><span> * 現在のデータベース (ソース データベース) と指定されたデータベース (ターゲット データベース) に同じ名前の指定されたキーがある場合、またはキーが現在のデータベースに存在しない場合、MOVE は効果がありません。
</span><span> 152</span><span> * @著者 zhaoyingnan 2015-10-19 15:42
</span><span> 153</span><span> * @param string $sKey キー
</span><span> 154</span><span> * @param int $iDb 指定されたデータベース ID に移動します
</span><span> 155</span><span> * @return bool
</span><span> 156</span><span> *</span><span>*/</span><span> 157</span><span>public</span><span>function</span> move(<span>$sKey</span>, <span>$iDb</span><span>)
</span><span> 158</span><span> {
</span><span> 159</span><span>if</span>(!<span>$sKey</span> || !<span>$iDb</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 160</span><span>return</span> self::<span>$redis</span>->move(<span>$sKey</span>, <span>$iDb</span><span>);
</span><span> 161</span><span> }
</span><span> 162</span><span> 163</span><span>/*</span><span>*
</span><span> 164</span><span> * 指定されたキーの有効期間を削除し、このキーを「揮発性」(有効期間のあるキー) から「永続的」(有効期間がなく有効期限が切れないキー) に変換します。
</span><span> 165</span><span> * @著者 zhaoyingnan 2015-10-19 15:55
</span><span> 166</span><span> * @param string $sKey キー
</span><span> 167</span><span> * @return bool 生存時間が正常に削除された場合は 1 を返します。キーが存在しない場合、またはキーに生存時間が設定されていない場合は 0 を返します
</span><span> 168</span><span> *</span><span>*/</span><span> 169</span><span>public</span><span>function</span>persist(<span>$sKey</span><span>)
</span><span> 170</span><span> {
</span><span> 171</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 172</span><span>return</span> self::<span>$redis</span>->persist(<span>$sKey</span><span>);
</span><span> 173</span><span> }
</span><span> 174</span><span> 175</span><span>/*</span><span>*
</span><span> 176</span><span> * 現在のデータベースからランダムなキーを返します。
</span><span> 177</span><span> * @著者 zhaoyingnan 2015-10-19 16:08
</span><span> 178</span><span> * @return string データベースにキーがない場合は nil を返し、それ以外の場合はランダムなキーを返します。
</span><span> 179</span><span> *</span><span>*/</span><span> 180</span><span>public</span><span>function</span><span>randomkey()
</span><span> 181</span><span> {
</span><span> 182</span><span>return</span> self::<span>$redis</span>-><span>randomkey();
</span><span> 183</span><span> }
</span><span> 184</span><span> 185</span><span>/*</span><span>*
</span><span> 186</span><span> * key を newkey に変更します。key が newkey と同じ場合、エラーが返されます。 newkey がすでに存在する場合、値は上書きされます。</span><span> 187</span><span> * @author zhaoyingnan 2015-10-19 16:12
</span><span> 188</span><span> * @param string $sKey キー
</span><span> 189</span><span> * @param string $sNewKey 名前変更後のキーの値
</span><span> 190</span><span> * @return bool
</span><span> 191</span><span> *</span><span>*/</span><span> 192</span><span>public</span><span>関数</span><span>名前変更</span>(<span>$sKey</span>, <span>$sNewKey</span><span>)
</span><span> 193</span><span> {
</span><span> 194</span><span>if</span>(!<span>$sKey</span> || !<span>$sNewKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 195</span><span>return</span> self::<span>$redis</span>-><span>rename</span>(<span>$sKey</span>, <span>$sNewKey</span><span>);
</span><span>196</span><span> }
</span><span> 197</span><span> 198</span><span>/*</span><span>*
</span><span> 199</span><span> * newkey が存在しない場合にのみ、key の名前を newkey に変更します。キーが存在しない場合はエラーを返します。
</span><span> 200</span><span> * @著者 zhaoyingnan 2015-10-19 16:16
</span><span> 201</span><span> * @param string $sKey キー
</span><span> 202</span><span> * @param string $sNewKey 名前変更後のキーの値
</span><span> 203</span><span> * @return bool
</span><span> 204</span><span> *</span><span>*/</span><span> 205</span><span>public</span><span>function</span> renamenx(<span>$sKey</span>, <span>$sNewKey</span><span>)
</span><span> 206</span><span> {
</span><span> 207</span><span>if</span>(!<span>$sKey</span> || !<span>$sNewKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 208</span><span>return</span> self::<span>$redis</span>->renamenx(<span>$sKey</span>, <span>$sNewKey</span><span>);
</span><span> 209</span><span> }
</span><span> 210</span><span> 211</span><span>/*</span><span>*
</span><span> 212</span><span> * キーに格納されている値の型を返します。
</span><span> 213</span><span> * @著者 zhaoyingnan 2015-10-19 16:25
</span><span> 214</span><span> * @param string $sKey キー
</span><span> 215</span><span> * @return string none (キーが存在しない) string (文字列) list (リスト) set (set) zset (順序セット) hash (ハッシュ テーブル)
</span><span> 216</span><span> *</span><span>*/</span><span> 217</span><span>public</span><span>function</span> type(<span>$sKey</span><span>)
</span><span> 218</span><span> {
</span><span> 219</span><span>return</span> self::<span>$redis</span>->type(<span>$sKey</span><span>);
</span><span> 220</span><span> }
</span><span> 221</span><span> 222</span><span>/*</span><span>****************** 文字列 ******************* *</span><span>*/</span><span>223</span><span>224</span><span>/*</span><span>*
</span><span> 225</span><span> * キーと値を一致させます。キーがすでに存在する場合は、そのタイプに関係なく上書きされます。
</span><span> 226</span><span> * @author zhaoyingnan 2015-10-19 16:35
</span><span> 227</span><span> * @param string $sKey キー
</span><span> 228</span><span> * @param string $sValue キーに対応する値
</span><span> 229</span><span> * @return bool
</span><span> 230</span><span> *</span><span>*/</span><span> 231</span><span>public</span><span>function</span> set(<span>$sKey</span>, <span>$sValue</span><span>)
</span><span> 232</span><span> {
</span><span> 233</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 234</span><span>return</span> self::<span>$redis</span>->set(<span>$sKey</span>, <span>$sValue</span><span>);
</span><span> 235</span><span> }
</span><span> 236</span><span> 237</span><span>/*</span><span>*
</span><span> 238</span><span> * 文字列値に対応するキーを設定し、指定された秒数後にタイムアウトするようにキーを設定します。</span><span> 239</span><span> * @著者 zhaoyingnan 2015-11-03 11:25
</span><span> 240</span><span> * @param string $sKey 操作されているキー
</span><span> 241</span><span> * @param int $iSecond ライフ サイクル (秒)
</span><span> 242</span><span> * @param string $sValue キーに対応する値
</span><span> 243</span><span> * @return bool
</span><span> 244</span><span> *</span><span>*/</span><span> 245</span><span>public</span><span>function</span> setex(<span>$sKey</span>, <span>$iSecond</span>, <span>$sValue</span><span>)
</span><span> 246</span><span> {
</span><span> 247</span><span>if</span>(!<span>$sKey</span> || !<span>$sValue</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 248</span><span>$iSecond</span> = <span>$iSecond</span> ? <span>abs</span>((<span>intval</span>(<span>$iSecond</span>)))) : 30<span>;
</span><span> 249</span><span>return</span> self::<span>$redis</span>->setex(<span>$sKey</span>, <span>$iSecond</span>, <span>$sValue</span><span>);
</span><span> 250</span><span> }
</span><span> 251</span><span> 252</span><span>/*</span><span>*
</span><span> 253</span><span> * 文字列値に対応するキーを設定し、指定されたミリ秒後にタイムアウトするようにキーを設定します。
</span><span> 254</span><span> * @著者 zhaoyingnan 2015-11-03 11:25
</span><span> 255</span><span> * @param string $sKey 操作されているキー
</span><span> 256</span><span> * @param int $iMillSecond ライフ サイクル (ミリ秒)
</span><span> 257</span><span> * @param string $sValue キーに対応する値
</span><span> 258</span><span> * @return bool
</span><span> 259</span><span> *</span><span>*/</span><span> 260</span><span>public</span><span>function</span> psetex(<span>$sKey</span>, <span>$iミリ秒</span> , <span>$sValue</span><span>)
</span><span> 261</span><span> {
</span><span> 262</span><span>if</span>(!<span>$sKey</span> || !<span>$sValue</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 263</span><span>$iミリ秒</span> = <span>$iミリ秒</span> ? <span>abs</span>((<span>intval</span>(<span>$iミリ秒</span>)))) : 30<span>;
</span><span> 264</span><span>return</span> self::<span>$redis</span>->psetex(<span>$sKey</span>, <span>$iミリ秒</span>, <span>$sValue</span><span>);
</span><span> 265</span><span> }
</span><span> 266</span><span> 267</span><span>/*</span><span>*
</span><span> 268</span><span> * キーを値に自動的にマッピングし、元のキーに対応する値を返します。キーは存在するが、対応する値が文字列ではない場合、エラーが返されます。
</span><span> 269</span><span> * @author zhaoyingnan 2015-10-19 18:10
</span><span> 270</span><span> * @param string $sKey キー
</span><span> 271</span><span> * @param string $sValue 新しい値セット
</span><span> 272</span><span> * @return string
</span><span> 273</span><span> *</span><span>*/</span><span> 274</span><span>public</span><span>function</span> getset(<span>$sKey</span>, <span>$sValue</span><span>)
</span><span> 275</span><span> {
</span><span> 276</span><span>if</span>(!<span>$sKey</span>)<span>return</span> ''<span>;
</span><span> 277</span><span>return</span> self::<span>$redis</span>->getset(<span>$sKey</span>, <span>$sValue</span><span>);
</span><span> 278</span><span> }
</span><span> 279</span><span> 280</span><span>/*</span><span>*
</span><span> 281</span><span> * 指定されたキーと対応する値に対応します。 MSET は、通常の SET コマンドと同様に、既存の値を新しい値に置き換えます。
</span><span> 282</span><span> * 既存の値を上書きしたくない場合は、MSETNX コマンドを参照してください。
</span><span> 283</span><span> * MSET はアトミックであるため、指定されたすべてのキーが一度に設定されます。一部のキーが更新され、他のキーは変更されていないことをクライアントが認識することは不可能です。
</span><span> 284</span><span> * @著者 zhaoyingnan 2015-11-03 11:04
</span><span> 285</span><span> * @param array $arArray 設定する連想配列
</span><span> 286</span><span> * @return bool
</span><span> 287</span><span> *</span><span>*/</span><span> 288</span><span>public</span><span>function</span> mset(<span>$arArray</span> = <span>array</span><span>())
</span><span> 289</span><span> {
</span><span> 290</span><span>if</span>(!<span>$arArray</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 291</span><span>return</span> self::<span>$redis</span>->mset(<span>$arArray</span><span>);
</span><span> 292</span><span> }
</span><span> 293</span><span> 294</span><span>/*</span><span>*
</span><span> 295</span><span> * 指定されたキーと対応する値に対応します。
</span><span> 296</span><span> * キーがすでに存在する限り、MSETNX は単一の操作を実行しません。</span><span> 297</span><span> * この機能により、MSETNX はすべての操作が成功するか、何も実行されないかのどちらかを実現できます。これを使用して、一意のオブジェクトのさまざまなフィールドを表すさまざまなキーを設定できます。
</span><span> 298</span><span> * MSETNX はアトミックであるため、指定されたすべてのキーが一度に設定されます。一部のキーが更新され、他のキーは変更されていないことをクライアントが認識することは不可能です。
</span><span> 299</span><span> * @著者 zhaoyingnan 2015-11-03 11:11
</span><span> 300</span><span> * @param array $arArray 設定する連想配列
</span><span> 301</span><span> * @return bool TRUE すべてのキーが設定されている、FALSE キーが設定されていない (少なくとも 1 つのキーが存在する)
</span><span> 302</span><span> *</span><span>*/</span><span> 303</span><span>public</span><span>function</span> msetnx(<span>$arArray</span> = <span>array</span><span>())
</span><span> 304</span><span> {
</span><span> 305</span><span>if</span>(!<span>$arArray</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 306</span><span>return</span> self::<span>$redis</span>->msetnx(<span>$arArray</span><span>);
</span><span> 307</span><span> }
</span><span> 308</span><span> 309</span><span>/*</span><span>*
</span><span> 310</span><span> ※キーが存在しない場合は、キーに対応する文字列値を設定します。
</span><span> 311</span><span> ※この場合のコマンドはSETと同じです。キーがすでに存在する場合、何も実行されません。
</span><span> 312</span><span> * SETNX は「存在しない場合は SET」です。
</span><span> 313</span><span> * @著者 zhaoyingnan 2015-11-03 11:49
</span><span> 314</span><span> * @param string $sKey キー
</span><span> 315</span><span> * @param string $sValue 値
</span><span> 316</span><span> * @return bool TRUEキーが設定され、FALSEキーが設定されていません
</span><span> 317</span><span> *</span><span>*/</span><span> 318</span><span>public</span><span>function</span> setnx(<span>$sKey</span>, <span>$sValue</span><span>)
</span><span> 319</span><span> {
</span><span> 320</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 321</span><span>return</span> self::<span>$redis</span>->setnx(<span>$sKey</span>, <span>$sValue</span><span>);
</span><span> 322</span><span> }
</span><span> 323</span><span> 324</span><span>/*</span><span>*
</span><span> 325</span><span> * キーの値を返します。キーが存在しない場合は、特別な値 nil が返されます。キーの値が文字列でない場合、GET は文字列型の値のみを処理するため、エラーが返されます。
</span><span> 326</span><span> * @author zhaoyingnan 2015-10-19 17:57
</span><span> 327</span><span> * @param string $sKey キー
</span><span> 328</span><span> * @return string
</span><span> 329</span><span> *</span><span>*/</span><span> 330</span><span>public</span><span>function</span> get(<span>$sKey</span><span>)
</span><span> 331</span><span> {
</span><span> 332</span><span>if</span>(!<span>$sKey</span>)<span>return</span> ''<span>;
</span><span> 333</span><span>return</span> self::<span>$redis</span>->get(<span>$sKey</span><span>);
</span><span> 334</span><span> }
</span><span> 335</span><span> 336</span><span>/*</span><span>*
</span><span> 337</span><span> * 指定されたすべてのキーの値を返します。文字列に対応しないキー、または存在しないキーごとに、特別な値 nil が返されます。このため、操作が失敗することはありません。
</span><span> 338</span><span> * @著者 zhaoyingnan 2015-11-03 10:55
</span><span> 339</span><span> * @param array $arKey 取得するキーの配列
</span><span> 340</span><span> * @return array redis は、数字でインデックス付けされた配列を返します <strong></strong>、ここで返されるのは連想配列です
</span><span> 341</span><span> *</span><span>*/</span><span> 342</span><span>public</span><span>function</span> mget(<span>$arKey</span> = <span>array</span><span>())
</span><span> 343</span><span> {
</span><span> 344</span><span>if</span>(!<span>$arKey</span>)<span>return</span><span>array</span><span>();
</span><span> 345</span><span>$arResult</span> = self::<span>$redis</span>->mget(<span>$arKey</span><span>);
</span><span> 346</span><span>return</span><span>array_combine</span>(<span>$arKey</span>, <span>$arResult</span><span>);
</span><span> 347</span><span> }
</span><span> 348</span><span> 349</span><span>/*</span><span>*
</span><span> 350</span><span> * キーがすでに存在し、値が文字列の場合、このコマンドは元の値 (値) の末尾に値を追加します。
</span><span> 351</span><span> * キーが存在しない場合、最初に空の文字列キーを作成してから追加操作を実行します。この場合、APPEND は SET 操作と同様になります。</span><span> 352</span><span> * @author zhaoyingnan 2015-10-19 16:34
</span><span> 353</span><span> * @param string $sKey キー
</span><span> 354</span><span> * @param string $sValue の追加値
</span><span> 355</span><span> * @return int
</span><span> 356</span><span> *</span><span>*/</span><span> 357</span><span>public</span><span>function</span> append(<span>$sKey</span>, <span>$sValue</span><span>)
</span><span> 358</span><span> {
</span><span> 359</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 360</span><span>return</span> self::<span>$redis</span>->append(<span>$sKey</span>, <span>$sValue</span><span>);
</span><span> 361</span><span> }
</span><span> 362</span><span> 363</span><span>/*</span><span>*
</span><span> 364</span><span> * キーに対応する番号に 1 を加えます。キーが存在しない場合、キーに対応する値は操作前に 0 に設定されます。
</span><span> 365</span><span> * key の値が間違った型である場合、または数値として表現できない文字列である場合は、エラーが返されます。
</span><span> 366</span><span> * この演算は、最大 64 ビットの符号付き整数をサポートします。
</span><span> 367</span><span> * @author zhaoyingnan 2015-10-19 17:44
</span><span> 368</span><span> * @param string $sKey キー
</span><span> 369</span><span> * @return string
</span><span> 370</span><span> *</span><span>*/</span><span> 371</span><span>public</span><span>function</span> incr(<span>$sKey</span><span>)
</span><span> 372</span><span> {
</span><span> 373</span><span>if</span>(!<span>$sKey</span>)<span>return</span> ''<span>;
</span><span> 374</span><span>return</span> self::<span>$redis</span>->incr(<span>$sKey</span><span>);
</span><span> 375</span><span> }
</span><span> 376</span><span> 377</span><span>/*</span><span>*
</span><span> 378</span><span> * キーに対応する数値にデクリメントを加算します。キーが存在しない場合、操作前にキーは 0 に設定されます。
</span><span> 379</span><span> ※キーの値の型が間違っていたり、数値として表現できない文字列の場合はエラーとなります。この演算では、最大 64 ビットの符号付き正数がサポートされます。
</span><span> 380</span><span> * @著者 zhaoyingnan 2015-10-19 17:44
</span><span> 381</span><span> * @param string $sKey キー
</span><span> 382</span><span> * @param int $iIncrement ステップ値
</span><span> 383</span><span> * @return string
</span><span> 384</span><span> *</span><span>*/</span><span> 385</span><span>public</span><span>function</span> incrby(<span>$sKey</span>, <span>$iIncrement</span><span>)
</span><span> 386</span><span> {
</span><span> 387</span><span>if</span>(!<span>$sKey</span> || !<span>$iIncrement</span>)<span>return</span> ''<span>;
</span><span> 388</span><span>return</span> self::<span>$redis</span>->incrby(<span>$sKey</span>, <span>$iIncrement</span><span>);
</span><span> 389</span><span> }
</span><span> 390</span><span> 391</span><span>/*</span><span>*
</span><span> 392</span><span> * キーに対応する数値にデクリメントを加算します。キーが存在しない場合、操作前にキーは 0 に設定されます。
</span><span> 393</span><span> ※キーの値の型が間違っていたり、数値として表現できない文字列の場合はエラーとなります。この演算では、最大 64 ビットの符号付き正数がサポートされます。
</span><span> 394</span><span> * @著者zhaoyingnan 2015-10-19 17:44
</span><span> 395</span><span> * @param string $sKey キー
</span><span> 396</span><span> * @param fload $floatIncrement ステップ値
</span><span> 397</span><span> * @return string
</span><span> 398</span><span> *</span><span>*/</span><span> 399</span><span>public</span><span>function</span> incrbyfloat(<span>$sKey</span>, <span>$floatIncrement</span><span>)
</span><span> 400</span><span> {
</span><span> 401</span><span>if</span>(!<span>$sKey</span> || !<span>$floatIncrement</span>)<span>return</span> ''<span>;
</span><span> 402</span><span>return</span> self::<span>$redis</span>->incrbyfloat(<span>$sKey</span>, <span>$floatIncrement</span><span>);
</span><span> 403</span><span> }
</span><span> 404</span><span> 405</span><span>/*</span><span>*
</span><span> 406</span><span> * キーに対応する数字から 1 を引きます。キーが存在しない場合、キーに対応する値は操作前に 0 に設定されます。
</span><span> 407</span><span> * key の値が間違った型である場合、または数値として表現できない文字列である場合は、エラーが返されます。この演算では、最大 64 ビットの符号付き整数がサポートされます。</span><span> 408</span><span> * @著者 zhaoyingnan 2015-10-19 17:44
</span><span> 409</span><span> * @param string $sKey キー
</span><span> 410</span><span> * @return string
</span><span> 411</span><span> *</span><span>*/</span><span> 412</span><span>public</span><span>function</span> decr(<span>$sKey</span><span>)
</span><span> 413</span><span> {
</span><span> 414</span><span>if</span>(!<span>$sKey</span>)<span>return</span> ''<span>;
</span><span> 415</span><span>return</span> self::<span>$redis</span>->decr(<span>$sKey</span><span>);
</span><span> 416</span><span> }
</span><span> 417</span><span> 418</span><span>/*</span><span>*
</span><span> 419</span><span> * キーに対応する番号をデクリメントします。キーが存在しない場合、操作前にキーは 0 に設定されます。
</span><span> 420</span><span> ※キーの値の型が間違っていたり、数値として表現できない文字列の場合はエラーとなります。この演算では、最大 64 ビットの符号付き正数がサポートされます。
</span><span> 421</span><span> * @author zhaoyingnan 2015-10-19 17:44
</span><span> 422</span><span> * @param string $sKey キー
</span><span> 423</span><span> * @param int $iIncrement ステップ値
</span><span> 424</span><span> * @return string
</span><span> 425</span><span> *</span><span>*/</span><span> 426</span><span>public</span><span>function</span> decrby(<span>$sKey</span>, <span>$iIncrement</span><span>)
</span><span> 427</span><span> {
</span><span> 428</span><span>if</span>(!<span>$sKey</span> || !<span>$iIncrement</span>)<span>return</span> ''<span>;
</span><span> 429</span><span>return</span> self::<span>$redis</span>->decrby(<span>$sKey</span>, <span>$iIncrement</span><span>);
</span><span> 430</span><span> }
</span><span> 431</span><span> 432</span><span>/*</span><span>*
</span><span> 433</span><span> * このコマンドは GETRANGE に変更され、2.0 より前の Redis バージョンでは SUBSTR と呼ばれます。
</span><span> 434</span><span> * キーに対応する文字列値の部分文字列を返します。この部分文字列は、開始位置と終了位置の変位によって決まります (両方とも文字列内にあります)。
</span><span> 435</span><span> * 負のディスプレイスメントを使用して、文字列の末尾から始まる添え字を表すことができます。したがって、-1 は最後の文字、-2 は最後から 2 番目の文字、というようになります。
</span><span> 436</span><span> * この関数が範囲外のリクエストを処理する場合、結果は文字列に制限されます。
</span><span> 437</span><span> * @著者 zhaoyingnan 2015-10-19 18:04
</span><span> 438</span><span> * @param string $sKey キー
</span><span> 439</span><span> * @pause int $iStart 開始位置
</span><span> 440</span><span> * @pause int $iEnd 終了位置
</span><span> 441</span><span> * @return string
</span><span> 442</span><span> *</span><span>*/</span><span> 443</span><span>public</span><span>function</span> getrange(<span>$sKey</span>, <span>$iStart</span> = 0, <span>$iEnd</span> = -1<span>)
</span><span> 444</span><span> {
</span><span> 445</span><span>if</span>(!<span>$sKey</span>)<span>return</span> ''<span>;
</span><span> 446</span><span>return</span> self::<span>$redis</span>->getrange(<span>$sKey</span>, <span>$iStart</span>, <span>$iEnd</span><span>);
</span><span> 447</span><span> }
</span><span> 448</span><span> 449</span><span>/*</span><span>*
</span><span> 450</span><span> * キーの文字列型の値の長さを返します。キーが文字列以外の型に対応する場合は、エラーが返されます。
</span><span> 451</span><span> * @author zhaoyingnan 2015-11-03 11:40
</span><span> 452</span><span> * @param string $sKey
</span><span> 453</span><span> * @return
</span><span> 454</span><span> *</span><span>*/</span><span> 455</span><span>public</span><span>function</span><span>strlen</span>(<span>$sKey</span><span>)
</span><span> 456</span><span> {
</span><span> 457</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 458</span><span>return</span> self::<span>$redis</span>-><span>strlen</span>(<span>$sKey</span><span>);
</span><span> 459</span><span> }
</span><span> 460</span><span> 461</span><span>/*</span><span>****************** リスト ****************** *</span><span>*/</span><span> 462</span><span> 463</span><span>/*</span><span>*
</span><span> 464</span><span> * 指定されたすべての値を key に格納されているリストの先頭に挿入します。キーが存在しない場合は、プッシュ操作の前に空のリストが作成されます。
</span><span> 465</span><span> ※ keyに対応する値がリストでない場合はエラーが返ります。
</span><span> 466</span><span> * 1 つのコマンドを使用して複数の要素をリストにプッシュできます。コマンドの最後に指定された複数のパラメーターを追加するだけです。
</span><span> 467</span><span> * 要素はリストの左端から右端に向かって 1 つずつリストの先頭に挿入されます。したがって、このコマンド例 LPUSH mylist a b c では、返されるリストは最初の要素として c、2 番目の要素として b、3 番目の要素として a になります。
</span><span> 468</span><span> * @著者 zhaoyingnan 2015-11-03 11:59
</span><span> 469</span><span> * @param string $sKey
</span><span> 470</span><span> * @param array $arValue キーにプッシュする必要がある値の配列
</span><span> 471</span><span> * @return int プッシュ操作後のリストの長さ。
</span><span> 472</span><span> *</span><span>*/</span><span> 473</span><span>public</span><span>function</span> lpush(<span>$sKey</span>, <span>$arValue</span> = <span>array</span><span>())
</span><span> 474</span><span> {
</span><span> 475</span><span>if</span>(!<span>$sKey</span> || !<span>$arValue</span>)<span>return</span> 0<span>;
</span><span> 476</span><span>foreach</span>(<span>$arValue</span><span>as</span><span>$val</span><span>)
</span><span> 477</span> self::<span>$redis</span>->lpush(<span>$sKey</span>, <span>$val</span><span>);
</span><span> 478</span><span>return</span> self::llen(<span>$sKey</span><span>);
</span><span> 479</span><span> }
</span><span> 480</span><span> 481</span><span>/*</span><span>*
</span><span> 482</span><span> * キーがすでに存在し、リストが格納されている場合にのみ、キーの下のリストの先頭に値が挿入されます。
</span><span> 483</span><span> ※LPUSHとは逆に、キーが存在しない場合は何も動作しません。
</span><span> 484</span><span> * @著者zhaoyingnan 2015-11-03 13:21
</span><span> 485</span><span> * @param string $sKey
</span><span> 486</span><span> * @param array $arValue キーにプッシュする必要がある値の配列
</span><span> 487</span><span> * @return int
</span><span> 488</span><span> *</span><span>*/</span><span> 489</span><span>public</span><span>function</span> lpushx(<span>$sKey</span>, <span>$arValue</span> = <span>array</span><span>())
</span><span> 490</span><span> {
</span><span> 491</span><span>if</span>(!<span>$sKey</span> || !<span>$arValue</span>)<span>return</span> 0<span>;
</span><span> 492</span><span>foreach</span>(<span>$arValue</span><span>as</span><span>$val</span><span>)
</span><span> 493</span> self::<span>$redis</span>->lpushx(<span>$sKey</span>, <span>$val</span><span>);
</span><span> 494</span><span>return</span> self::llen(<span>$sKey</span><span>);
</span><span> 495</span><span> }
</span><span> 496</span><span> 497</span><span>/*</span><span>*
</span><span> 498</span><span> * 指定されたすべての値を key に格納されているリストの末尾に挿入します。キーが存在しない場合は、空のリストが作成され、プッシュ操作が実行されます。
</span><span> 499</span><span> ※キーがリストとして保存されていない場合はエラーが返されます。
</span><span> 500</span><span> * 1 つのコマンドを使用して複数の要素を <strong>queue</strong> に入れることができます。コマンドの後に複数のパラメーターを指定するだけです。
</span><span> 501</span><span> * 要素はリストの最後から左から右に順番に挿入されます。 たとえば、コマンド RPUSH mylist a b c は、最初の要素が a 、2 番目の要素が b 、3 番目の要素が c であるリストを返します。
</span><span> 502</span><span> * @著者 zhaoyingnan 2015-11-03 12:15
</span><span> 503</span><span> * @param string $sKey
</span><span> 504</span><span> * @param array $arValue キーにプッシュする必要がある値の配列
</span><span> 505</span><span> * @return int プッシュ操作後のリストの長さ。
</span><span> 506</span><span> *</span><span>*/</span><span> 507</span><span>public</span><span>function</span> rpush(<span>$sKey</span>, <span>$arValue</span> = <span>array</span><span>())
</span><span> 508</span><span> {
</span><span> 509</span><span>if</span>(!<span>$sKey</span> || !<span>$arValue</span>)<span>return</span> 0<span>;
</span><span> 510</span><span>foreach</span>(<span>$arValue</span><span>as</span><span>$val</span><span>)
</span><span> 511</span> self::<span>$redis</span>->lpush(<span>$sKey</span>, <span>$val</span><span>);
</span><span> 512</span><span>return</span> self::llen(<span>$sKey</span><span>);
</span><span> 513</span><span> }
</span><span> 514</span><span> 515</span><span>/*</span><span>*
</span><span> 516</span><span> * キーが存在し、リストである場合に限り、リストのキーの末尾に値 value を挿入します。
</span><span> 517</span><span> * RPUSH コマンドとは異なり、RPUSHX コマンドはキーが存在しない場合には何も行いません。
</span><span> 518</span><span> * @著者 zhaoyingnan 2015-11-03 13:23
</span><span> 519</span><span> * @param string $sKey
</span><span> 520</span><span> * @param array $arValue キーにプッシュする必要がある値の配列
</span><span> 521</span><span> * @return int プッシュ操作後のリストの長さ。</span><span> 522</span><span> *</span><span>*/</span><span> 523</span><span>public</span><span>function</span> rpushx(<span>$sKey</span>, <span>$arValue</span> = <span>array</span><span>())
</span><span> 524</span><span> {
</span><span> 525</span><span>if</span>(!<span>$sKey</span> || !<span>$arValue</span>)<span>return</span> 0<span>;
</span><span> 526</span><span>foreach</span>(<span>$arValue</span><span>as</span><span>$val</span><span>)
</span><span> 527</span> self::<span>$redis</span>->rpushx(<span>$sKey</span>, <span>$val</span><span>);
</span><span> 528</span><span>return</span> self::llen(<span>$sKey</span><span>);
</span><span> 529</span><span> }
</span><span> 530</span><span> 531</span><span>/*</span><span>*
</span><span> 532</span><span> * key に格納されているリストの長さを返します。
</span><span> 533</span><span> * @著者 zhaoyingnan 2015-11-03 12:12
</span><span> 534</span><span> * @param string $sKey
</span><span> 535</span><span> * @return bool キーが存在しない場合、空のリストとみなされ、返される長さは 0 になります。 keyに格納された値がリストでない場合はエラーが返されます。
</span><span> 536</span><span> *</span><span>*/</span><span> 537</span><span>public</span><span>function</span> llen(<span>$sKey</span><span>)
</span><span> 538</span><span> {
</span><span> 539</span><span>if</span>(!<span>$sKey</span>)<span>return</span> 0<span>;
</span><span> 540</span><span>return</span> self::<span>$redis</span>->llen(<span>$sKey</span><span>);
</span><span> 541</span><span> }
</span><span> 542</span><span> 543</span><span>/*</span><span>*
</span><span> 544</span><span> * キーに対応するリスト内の要素の<strong>index</strong>インデックスの値を返します
</span><span> 545</span><span> * 添字は 0<strong>index</strong> から始まるため、0 は最初の要素を意味し、1 は 2 番目の要素を意味します。
</span><span> 546</span><span> * 負の<strong>index</strong>は、リストの末尾から<strong>index</strong>から始まる要素を指定するために使用されます。このアプローチでは、-1 は最後の要素を表し、-2 は最後から 2 番目の要素を表し、以下同様になります。
</span><span> 547</span><span> ※キー位置の値がリストでない場合はエラーを返します。
</span><span> 548</span><span> * @著者zhaoyingnan 2015-11-03 13:30
</span><span> 549</span><span> * @param string $sKey
</span><span> 550</span><span> * @param array $index key 対応するリストのインデックス <strong>Index</strong>
</span><span> 551</span><span> * @return mix
</span><span> 552</span><span> *</span><span>*/</span><span> 553</span><span>public</span><span>function</span> lindex(<span>$sKey</span>, <span>$index</span> = 0<span>)
</span><span> 554</span><span> {
</span><span> 555</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 556</span><span>return</span> self::<span>$redis</span>->lindex(<span>$sKey</span>, <span>intval</span>(<span>$index</span><span>));
</span><span> 557</span><span> }
</span><span> 558</span><span> 559</span><span>/*</span><span>*
</span><span> 560</span><span> * インデックス位置のリスト要素の値を value に設定します。
</span><span> 561</span><span> * 添字は 0<strong>index</strong> から始まるため、0 は最初の要素を意味し、1 は 2 番目の要素を意味します。
</span><span> 562</span><span> ※インデックスが範囲外の場合はエラーとなります。
</span><span> 563</span><span> * @著者 zhaoyingnan 2015-11-03 14:27
</span><span> 564</span><span> * @param string $sKey
</span><span> 565</span><span> * @param int $index key 対応するリストにインデックスが付けられます。
</span><span> 566</span><span> * @param string $sValue 設定する値
</span><span> 567</span><span> * @return
</span><span> 568</span><span> *</span><span>*/</span><span> 569</span><span>public</span><span>function</span> lset(<span>$sKey</span>, <span>$index</span>, <span>$sValue</span><span>)
</span><span> 570</span><span> {
</span><span> 571</span><span>if</span>(!<span>$sKey</span> || !<span>$sValue</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 572</span><span>return</span> self::<span>$redis</span>->lset(<span>$sKey</span>, <span>$index</span>, <span>$sValue</span><span>);
</span><span> 573</span><span> }
</span><span> 574</span><span> 575</span><span>/*</span><span>*
</span><span> 576</span><span> * キーに格納されているリストのピボット値の前または後に値を挿入します。
</span><span> 577</span><span> * キーが存在しない場合、このリストは空のリストとみなされ、何も操作されません。
</span><span> 578</span><span> * キーは存在するが、保存されたリストがリストではない場合、エラーが返されます。</span><span> 579</span><span> * @著者 zhaoyingnan 2015-11-03 13:42
</span><span> 580</span><span> * @param string $sKey
</span><span> 581</span><span> * @param string $sPosion ベース値の前または後 (BEFORE または AFTER)
</span><span> 582</span><span> * @param string $pivot リスト内のピボット値
</span><span> 583</span><span> * @param string $sValue 挿入された値
</span><span> 584</span><span> * @return mix 挿入操作後のリストの長さ、またはピボット値が見つからない場合は -1。
</span><span> 585</span><span> *</span><span>*/</span><span> 586</span><span>public</span><span>function</span> linsert(<span>$sKey</span>, <span>$sPosion</span>, <span>$pivot</span>, <span>$sValue </span><span>)
</span><span> 587</span><span> {
</span><span> 588</span><span>if</span>(!<span>$sKey</span> || !<span>$pivot</span> || !<span>$sValue</span>)<span>return</span><span>FALSE</span><span>;
</span><span>589</span><span>$sposion</span>=<span>in_array</span>($sposion<span>、</span>ray<span>( 'before'、 'after'))?
</span><span> 590</span><span>return</span> self::<span>$redis</span>->linsert(<span>$sKey</span>, <span>$sPosion</span>, <span>$pivot</span>, <span>$sValue</span><span>);
</span><span> 591</span><span> }
</span><span> 592</span><span> 593</span><span>/*</span><span>*
</span><span> 594</span><span> * key に格納されているリストから、value value を持つ最初の count 要素を削除します。 count パラメータは、いくつかの点でこの操作に影響を与えます。
</span><span> 595</span><span> * count > 0: 先頭から末尾までの値を持つ要素を削除します。
</span><span> 596</span><span> * count <span> 597</span><span> * count = 0: value value を持つすべての要素を削除します。
</span><span> 598</span><span> * たとえば、LREM list -2 "hello" は、list に保存されているリストから、"hello" の最後の 2 つの出現を削除します。
</span><span> 599</span><span> ※なお、リストにキーが存在しない場合は空のリストとして扱われるため、キーが存在しない場合、このコマンドは0を返します。
</span><span> 600</span><span> * @著者 zhaoyingnan 2015-11-03 13:53
</span><span> 601</span><span> * @param string $sKey
</span><span> 602</span><span> * @param int $iCount count > 0: 値を持つ要素を最初から最後まで削除します。 count <span> 603</span><span> * @param string $sValue 削除する値
</span><span> 604</span><span> * @return int
</span><span> 605</span><span> *</span><span>*/</span><span> 606</span><span>//</span><span>public function lremu($sKey, $iCount, $sValue)
</span><span> 607</span><span> //{
</span><span> 608</span><span> // var_dump($sValue);
</span><span> 609</span><span> // if(!$sKey || !$sValue)return FALSE;
</span><span> 610</span><span> // return self::$redis->lrem($sKey, intval($iCount), $sValue);
</span><span> 611</span><span> //}</span><span> 612</span><span> 613</span><span>/*</span><span>*
</span><span> 614</span><span> * リストに指定された範囲内の指定された要素のみが含まれるように、既存のリストをトリミングします。
</span><span> 615</span><span> * start と stop はどちらも 0 から数えます。0 はリスト (ヘッダー) の最初の要素、1 は 2 番目の要素などです。
</span><span> 616</span><span> * @著者 zhaoyingnan 2015-11-03 14:45
</span><span> 617</span><span> * @param string $sKey
</span><span> 618</span><span> * @param int $iStart 指定された範囲内の開始位置
</span><span> 619</span><span> * @param int $iEnd は範囲内の終了位置を指定します
</span><span> 620</span><span> * @return bool
</span><span> 621</span><span> *</span><span>*/</span><span> 622</span><span>public</span><span>function</span><span>ltrim</span>(<span>$sKey</span>, <span>$iStart</span>, <span>$iEnd</span><span>)
</span><span> 623</span><span> {
</span><span> 624</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 625</span><span>return</span> self::<span>$redis</span>-><span>ltrim</span>(<span>$sKey</span>, <span>intval</span>(<span>$iStart</span>), <span>intval</span>(<span>$iEnd</span><span>) );
</span><span> 626</span><span> }
</span><span> 627</span><span> 628</span><span>/*</span><span>*
</span><span> 629</span><span> * キーのリストに格納されている指定された範囲の要素を返します。
</span><span> 630</span><span> * 開始オフセットと終了オフセットはどちらも 0 から始まる添字です。つまり、リストの最初の要素は 0 (リストの先頭)、2 番目の要素は 1 になります。</span><span> 631</span><span> * オフセットは負の数にすることもできます。これは、オフセットがリストの最後から数えられることを意味します。 たとえば、-1 はリストの最後の要素、-2 は最後から 2 番目の要素、などとなります。
</span><span> 632</span><span> * @author zhaoyingnan 2015-11-03 14:54
</span><span> 633</span><span> * @param string $sKey
</span><span> 634</span><span> * @param int $iStart 開始位置
</span><span> 635</span><span> * @param int $iEnd 終了位置
</span><span> 636</span><span> * @return 配列
</span><span> 637</span><span> *</span><span>*/</span><span> 638</span><span>public</span><span>function</span> lrange(<span>$sKey</span>, <span>$iStart</span>, <span>$iEnd</span><span>)
</span><span> 639</span><span> {
</span><span> 640</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 641</span><span>return</span> self::<span>$redis</span>->lrange(<span>$sKey</span>, <span>intval</span>(<span>$iStart</span>), <span>intval</span>(<span>$iEnd</span><span>));
</span><span> 642</span><span> }
</span><span> 643</span><span> 644</span><span>/*</span><span>*
</span><span> 645</span><span> * キーに対応するリストの最初の要素を削除して返します。
</span><span> 646</span><span> * @著者 zhaoyingnan 2015-11-03 21:49
</span><span> 647</span><span> * @param string $sKey
</span><span> 648</span><span> * @return bool
</span><span> 649</span><span> *</span><span>*/</span><span> 650</span><span>public</span><span>function</span> lpop(<span>$sKey</span><span>)
</span><span> 651</span><span> {
</span><span> 652</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 653</span><span>return</span> self::<span>$redis</span>->lpop(<span>$sKey</span><span>);
</span><span> 654</span><span> }
</span><span> 655</span><span> 656</span><span>/*</span><span>*
</span><span> 657</span><span> * key に格納されているリストの最後の要素を削除して返します。</span><span> 658</span><span> * @著者 zhaoyingnan 2015-11-03 21:49
</span><span> 659</span><span> * @param string $sKey
</span><span> 660</span><span> * @return bool
</span><span> 661</span><span> *</span><span>*/</span><span> 662</span><span>public</span><span>function</span> rpop(<span>$sKey</span><span>)
</span><span> 663</span><span> {
</span><span> 664</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 665</span><span>return</span> self::<span>$redis</span>->rpop(<span>$sKey</span><span>);
</span><span> 666</span><span> }
</span><span> 667</span><span> 668</span><span>/*</span><span>****************** セット ******************* *</span><span>*/</span><span> 669</span><span> 670</span><span>/*</span><span>*
</span><span> 671</span><span> * 1 つ以上の指定されたメンバー要素をコレクションのキーに追加します。
</span><span> 672</span><span> * 1 つ以上の指定された要素メンバーがコレクション キーに既に存在する場合、それらは無視されます。
</span><span> 673</span><span> * コレクションキーが存在しない場合は、新しいコレクションキーを作成し、コレクションキーにメンバー要素を追加します。
</span><span> 674</span><span> * キーの種類がコレクションではない場合、エラーが返されます。
</span><span> 675</span><span> * @著者zhaoyingnan 2015-11-03 21:55
</span><span> 676</span><span> * @param string $sKey
</span><span> 677</span><span> * @param array $arMember 追加する要素の配列
</span><span> 678</span><span> * @return int コレクションにすでに存在する要素を除いて、コレクションに新しく正常に追加された要素の数を返します。
</span><span> 679</span><span> *</span><span>*/</span><span> 680</span><span>public</span><span>function</span>sadd(<span>$sKey</span>, <span>$arMember</span> = <span>array</span><span>())
</span><span> 681</span><span> {
</span><span> 682</span><span>if</span>(!<span>$sKey</span>)<span>return</span><span>FALSE</span><span>;
</span><span> 683</span><span>$iCount</span> = 0<span>;
</span><span> 684</span><span>foreach</span>(<span>$arメンバー</span><span>as</span><span>$val</span><span>)
</span><span> 685</span><span> {
</span><span> 686</span><span>if</span>(self::<span>$redis</span>->sadd(<span>$sKey</span>, <span>$val</span><span>))
</span><span> 687</span><span>$iCount</span>++<span>;
</span><span> 688</span><span> }
</span><span> 689</span><span>戻る</span><span>$iCount</span><span>;
</span><span> 690</span><span> }
</span><span> 691</span><span> 692</span><span>/*</span><span>*
</span><span> 693</span><span> * コレクションに格納されているキーのカーディナリティ (コレクション要素の数) を返します。
</span><span> 694</span><span> * @著者zhaoyingnan 2015-11-03 22:09
</span><span> 695</span><span> * @param string $sKey
</span><span> 696</span><span> * @return int
</span><span> 697</span><span> *</span><span>*/</span><span> 698</span><span>public</span><span>function</span> shard(<span>$sKey</span><span>)
</span><span> 699</span><span> {
</span><span> 700</span><span>if</span>(!<span>$sKey</span>)<span>return</span> 0<span>;
</span><span> 701</span><span>return</span> self::<span>$redis</span>->scard(<span>$sKey</span><span>);
</span><span> 702</span><span> }
</span><span> 703</span><span> 704</span><span>/*</span><span>*
</span><span> 705</span><span> * セットと指定されたセットの差の要素を返します。
</span><span> 706</span><span> * @著者zhaoyingnan 2015-11-03 22:13
</span><span> 707</span><span> * @param array $arKey
</span><span> 708</span><span> * @return 配列
</span><span> 709</span><span> *</span><span>*/</span><span> 710</span><span>public</span><span>function</span> sdiff(<span>$arKey</span><span>)
</span><span> 711</span><span> {
</span><span> 712</span><span>if</span>(!<span>$arKey</span>)<span>return</span><span>array</span><span>();
</span><span> 713</span><span>return</span> self::<span>$redis</span>->sdiff(<span>$arKey</span><span>);
</span><span> 714</span><span> }</span><span> 715</span><span> 716</span><span>/*</span><span>*
</span><span> 717</span><span> * このコマンドは結果セットを返さず、結果を宛先コレクションに保存することを除いて、SDIFF に似ています。
</span><span> 718</span><span> ※宛先が既に存在する場合は上書きしてください。
</span><span> 719</span><span> * @著者 zhaoyingnan 2015-11-04 10:16
</span><span> 720</span><span> * @param string $sNewKey
</span><span> 721</span><span> * @param array $arKey
</span><span> 722</span><span> * @return int 結果セット内の要素の数。
</span><span> 723</span><span> *</span><span>*/</span><span> 724</span><span>public</span><span>function</span> sdiffstore(<span>$sNewKey</span>, <span>$arKey</span><span>)
</span><span> 725</span><span> {
</span><span> 726</span><span>if</span>(!<span>$arKey</span> || !<span>$sNewKey</span>)<span>return</span> 0<span>;
</span><span> 727</span><span>if</span>(<span>$arResult</span> = self::<span>$redis</span>->sdiff(<span>$arKey</span><span>))
</span><span> 728</span><span>return</span><span>$this</span>->sadd(<span>$sNewKey</span>, <span>$arResult</span><span>);
</span><span> 729</span><span>戻る</span> 0<span>;
</span><span> 730</span><span> }
</span><span> 731</span><span> 732</span><span>/*</span><span>*
</span><span> 733</span><span> * 指定されたセットのすべてのメンバーの共通部分を返します。
</span><span> 734</span><span> * @著者zhaoyingnan 2015-11-04 10:18
</span><span> 735</span><span> * @param array $arKey
</span><span> 736</span><span> * @return 配列
</span><span> 737</span><span> *</span><span>*/</span><span> 738</span><span>public</span><span>function</span> sinter(<span>$arKey</span><span>)
</span><span> 739</span><span> {
</span><span> 740</span><span>if</span>(!<span>$arKey</span>)<span>return</span><span>array</span><span>();
</span><span> 741</span><span>return</span> self::<span>$redis</span>->sinter(<span>$arKey</span><span>);
</span><span> 742</span><span> }
</span><span> 743</span><span> 744</span><span>/*</span><span>*
</span><span> 745</span><span> * このコマンドは SINTER コマンドに似ていますが、結果セットを直接返すのではなく、結果を宛先コレクションに保存します。
</span><span> 746</span><span> * 宛先コレクションが存在する場合は上書きされます。
</span><span> 747</span><span> * @著者zhaoyingnan 2015-11-04 10:23
</span><span> 748</span><span> * @param string $sNewKey
</span><span> 749</span><span> * @param array $arKey
</span><span> 750</span><span> * @return int 結果セット内の要素の数。
</span><span> 751</span><span> *</span><span>*/</span><span> 752</span><span>public</span><span>function</span> sinterstore(<span>$sNewKey</span>, <span>$arKey</span><span>)
</span><span> 753</span><span> {
</span><span> 754</span><span>if</span>(!<span>$arKey</span> || !<span>$sNewKey</span>)<span>return</span> 0<span>;
</span><span> 755</span><span>if</span>(<span>$arResult</span> = self::<span>$redis</span>->sinter(<span>$arKey</span><span>))
</span><span> 756</span><span>return</span><span>$this</span>->sadd(<span>$sNewKey</span>, <span>$arResult</span><span>);
</span><span> 757</span><span>戻る</span> 0<span>;
</span><span> 758</span><span> }
</span><span> 759</span><span> 760</span><span>/*</span><span>*
</span><span> 761</span><span> * メンバー member が保存されたセットキーのメンバーであるかどうかを返します。
</span><span> 762</span><span> * @著者zhaoyingnan 2015-11-04 10:25
</span><span> 763</span><span> * @param string $sKey
</span><span> 764</span><span> * @param string $member
</span><span> 765</span><span> * @return int member 要素が設定されたキーのメンバーである場合は 1 を返します。 member 要素がキーのメンバーではない場合、または設定されたキーが存在しない場合は 0 を返します
</span><span> 766</span><span> *</span><span>*/</span><span> 767</span><span>public</span><span>function</span> sismember(<span>$sKey</span>, <span>$member</span><span>)
</span><span> 768</span><span> {
</span><span> 769</span><span>if</span>(!</span></span>
ログイン後にコピー