<span> 1</span> <?php <span>if</span> (!<span>정의</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,멀티,객체, 지속,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, 선택 ,set,setbit,setex,setnx,setrange,shutdown,sinter,sinterstore,sismember,slaveof,slowlog,smembers,smove,sort, spop,srandmember,srem,strlen,subscribe,sunion,sunionstore,sync,time,ttl,type ,구독 취소,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>공개</span><span>함수</span> __construct(<span>$arConfig</span> = <span>배열</span>( '호스트'=>'127.0.0.1', '포트'=>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>->host, <span>$this</span>-> <span>포트); </span><span> 15</span><span>반환</span> self::<span>$redis</span><span>; </span><span> 16</span><span> } </span><span> 17</span><span> 18</span><span>공개</span><span>함수</span> __call(<span>$sMethod</span>, <span>$arParam</span> <span>) </span><span> 19</span><span> { </span><span> 20</span><span>반환</span><span>call_user_func_array</span>(<span>배열</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> * KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 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>$s패턴</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> * 返回key是否存재。</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>공개</span><span>기능</span> 존재(<span>$s키</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 $i초 수명(초) </span><span> 60</span><span> * @return bool </span><span> 61</span><span> *</span><span>*/</span><span> 62</span><span>공개</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>반환</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 $i초 수명(초) </span><span> 73</span><span> * @return bool </span><span> 74</span><span> *</span><span>*/</span><span> 75</span><span>공개</span><span>기능</span> pexpire(<span>$sKey</span>, <span>$iMilliseconds</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>반환</span> self::<span>$redis</span>->pexpire(<span>$sKey</span>, <span>$iMilliseconds</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> * @author 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>공개</span><span>기능</span> 만료(<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>반환</span> self::<span>$redis</span>->expieat(<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> * @author 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>공개</span><span>함수</span> pexpireat(<span>$s키</span>, <span>$i밀리초</span><span>) </span><span> 103</span><span> { </span><span> 104</span><span>if</span>(!<span>$sKey</span> || !<span>$iMilliseconds</span>)<span>return</span><span>FALSE </span><span>; </span><span> 105</span><span>반환</span> self::<span>$redis</span>->pexpireat(<span>$sKey</span>, <span>$iMilliseconds</span> <span>); </span><span> 106</span><span> } </span><span> 107</span><span> 108</span><span>/*</span><span>* </span><span> 109</span><span> * 주어진 키의 남은 생존 시간(TTL, time to live)을 초 단위로 반환합니다. </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>공개</span><span>함수</span> ttl(<span>$s키</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>공개</span><span>함수</span> pttl(<span>$s키</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> * 이 명령은 실행 시 마이그레이션 성공, 마이그레이션 실패 또는 시간 초과 결과가 발생할 때까지 두 마이그레이션 인스턴스를 차단합니다. . </span><span> 135</span><span> * @author 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 timeout 매개변수는 밀리초 형식이며 현재 인스턴스와 대상 인스턴스 간의 최대 통신 간격을 지정합니다. 이는 작업이 제한 시간(밀리초) 내에 완료될 필요가 없으며 데이터 전송 시간이 이 제한 시간을 초과할 수 없음을 의미합니다.</span><span> 141</span><span> * @return bool 참고: 대상 인스턴스의 지정된 데이터베이스에 지정된 키가 있는 경우 FALS가 반환됩니다. 현재 인스턴스의 키는 삭제되지 않았습니다. 대상 인스턴스로 이동되었으나 대상 인스턴스의 키는 여전히 원본입니다. </span><span> 142</span><span> *</span><span>*/</span><span> 143</span><span>공개</span><span>기능</span> 마이그레이션(<span>$sHost</span>, <span>$iPort</span>, <span>$sKey</span>, <span>$iDb</span>, <span>$iTimeout</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>반환</span><span>거짓</span><span>; </span><span> 146</span><span>반환</span> self::<span>$redis</span>-> migration(<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> * @author 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>공개</span><span>기능</span> 이동(<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>반환</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> * @author 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>공개</span><span>기능</span> 지속(<span>$s키</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> * @author 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>공개</span><span>함수</span><span> 랜덤키 () </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> * 키 이름을 newkey로 변경합니다. 키가 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>공개</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>반환</span> self::<span>$redis</span>-><span>이름 바꾸기</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가 존재하지 않는 경우에만 키 이름을 newkey로 바꿉니다. 키가 존재하지 않으면 오류가 반환됩니다. </span><span> 200</span><span> * @author 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>공개</span><span>함수</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>반환</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> * @author 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(집합) zset(순서 있는 집합) hash(해시 테이블) </span><span> 216</span><span> *</span><span>*/</span><span> 217</span><span>공개</span><span>함수</span> 유형(<span>$s키</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>공개</span><span>기능</span> 설정(<span>$s키</span>, <span>$s값</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>반환</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> * @author zhaoyingnan 2015-11-03 11:25 </span><span> 240</span><span> * @param string $sKey 연산할 키 </span><span> 241</span><span> * @param int $i초 라이프 사이클(초) </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>공개</span><span>함수</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>반환</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> * @author 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>공개</span><span>함수</span> psetex(<span>$sKey</span>, <span>$iMilliseconds</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>$iMilliseconds</span> = <span>$iMilliseconds</span> ? <span>abs</span>((<span>intval</span>(<span>$iMilliseconds </span>))) : 30<span>; </span><span> 264</span><span>반환</span> self::<span>$redis</span>->psetex(<span>$sKey</span>, <span>$iMilliseconds</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 문자열 </span><span> 273</span><span> *</span><span>*/</span><span> 274</span><span>공개</span><span>함수</span> getset(<span>$s키</span>, <span>$s값</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>반환</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> * @author 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>공개</span><span>함수</span> mset(<span>$arArray</span> = <span>배열</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> * @author zhaoyingnan 2015-11-03 11:11 </span><span> 300</span><span> * @param array $arArray 설정할 연관 배열 </span><span> 301</span><span> * @return bool TRUE 모든 키가 설정됨, FALSE 키가 설정되지 않음(하나 이상의 키가 있음) </span><span> 302</span><span> *</span><span>*/</span><span> 303</span><span>공개</span><span>함수</span> msetnx(<span>$arArray</span> = <span>배열</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> * @author 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>공개</span><span>함수</span> setnx(<span>$s키</span>, <span>$s값</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>반환</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 문자열 </span><span> 329</span><span> *</span><span>*/</span><span> 330</span><span>공개</span><span>함수</span> get(<span>$s키</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> * @author 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>공개</span><span>함수</span> mget(<span>$arKey</span> = <span>배열</span><span>()) </span><span> 343</span><span> { </span><span> 344</span><span>if</span>(!<span>$arKey</span>)<span>return</span><span>배열</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>공개</span><span>함수</span> 추가(<span>$s키</span>, <span>$s값</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>반환</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> * 키에 잘못된 유형의 값이 있거나 숫자로 표현할 수 없는 문자열인 경우 오류가 반환됩니다. </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 문자열 </span><span> 370</span><span> *</span><span>*/</span><span> 371</span><span>공개</span><span>기능</span> incr(<span>$s키</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> * @author zhaoyingnan 2015-10-19 17:44 </span><span> 381</span><span> * @param string $sKey 키 </span><span> 382</span><span> * @param int $i증분 단계 값 </span><span> 383</span><span> * @return 문자열 </span><span> 384</span><span> *</span><span>*/</span><span> 385</span><span>공개</span><span>함수</span> incrby(<span>$s키</span>, <span>$i증분</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> * @author 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 문자열 </span><span> 398</span><span> *</span><span>*/</span><span> 399</span><span>공개</span><span>함수</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>반환</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> * 키에 잘못된 유형의 값이 있거나 숫자로 표현할 수 없는 문자열인 경우 오류가 반환됩니다. 이 작업은 최대 64비트 부호 있는 정수를 지원합니다.</span><span> 408</span><span> * @author zhaoyingnan 2015-10-19 17:44 </span><span> 409</span><span> * @param string $sKey 키 </span><span> 410</span><span> * @return 문자열 </span><span> 411</span><span> *</span><span>*/</span><span> 412</span><span>공개</span><span>함수</span> decr(<span>$s키</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> * 키에 해당하는 숫자를 1씩 감소시킵니다. 키가 존재하지 않으면 작업 전에 키가 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 $i증분 단계 값 </span><span> 424</span><span> * @return 문자열 </span><span> 425</span><span> *</span><span>*/</span><span> 426</span><span>공개</span><span>함수</span> Decrby(<span>$s키</span>, <span>$i증분</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>반환</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로 변경되었으며, Redis 2.0 미만 버전에서는 SUBSTR이라고 합니다. </span><span> 434</span><span> * 키에 해당하는 문자열 값의 하위 문자열을 반환합니다. 이 하위 문자열은 시작 및 끝 변위에 의해 결정됩니다(둘 다 문자열 내에 있음). </span><span> 435</span><span> * 음수 치환을 사용하여 문자열 끝부터 시작하는 아래 첨자를 나타낼 수 있습니다. 따라서 -1은 마지막 문자이고 -2는 마지막에서 두 번째 문자 등입니다. </span><span> 436</span><span> * 이 함수는 범위를 벗어난 요청을 처리할 때 결과를 문자열로 제한합니다. </span><span> 437</span><span> * @author 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 문자열 </span><span> 442</span><span> *</span><span>*/</span><span> 443</span><span>공개</span><span>함수</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>반환</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>공개</span><span>기능</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>반환</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> * 키에 저장된 목록의 선두에 지정된 값을 모두 삽입합니다. 키가 존재하지 않으면 푸시 작업 전에 빈 목록이 생성됩니다. </span><span> 465</span><span> * key에 해당하는 값이 리스트가 아닐 경우 에러를 반환합니다. </span><span> 466</span><span> * 하나의 명령을 사용하여 여러 요소를 목록에 푸시할 수 있습니다. 명령 끝에 지정된 여러 매개변수를 추가하면 됩니다. </span><span> 467</span><span> * 요소는 가장 왼쪽에서 가장 오른쪽으로 하나씩 목록의 선두에 삽입됩니다.따라서 이 명령 예 LPUSH mylist a b c의 경우 반환된 목록은 첫 번째 요소인 c, 두 번째 요소인 b, 세 번째 요소인 a입니다. </span><span> 468</span><span> * @author 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>공개</span><span>함수</span> lpush(<span>$sKey</span>, <span>$arValue</span> = <span>배열</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> * @author 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>공개</span><span>함수</span> lpushx(<span>$sKey</span>, <span>$arValue</span> = <span>배열</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> * 키에 저장된 목록의 끝에 지정된 값을 모두 삽입합니다. 키가 존재하지 않으면 빈 목록이 생성된 후 푸시 작업이 수행됩니다. </span><span> 499</span><span> * 키가 목록으로 저장되지 않은 경우 오류가 반환됩니다. </span><span> 500</span><span> * 하나의 명령을 사용하여 <strong>큐</strong>에 여러 요소를 넣을 수 있습니다. 명령 뒤에 여러 매개변수를 지정하면 됩니다. </span><span> 501</span><span> * 요소는 목록 끝부터 왼쪽에서 오른쪽으로 차례로 삽입됩니다. 예를 들어 RPUSH mylist a b c 명령은 첫 번째 요소가 a , 두 번째 요소가 b , 세 번째 요소가 c 인 목록을 반환합니다. </span><span> 502</span><span> * @author 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>공개</span><span>함수</span> rpush(<span>$sKey</span>, <span>$arValue</span> = <span>배열</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> * 키가 존재하고 목록인 경우에만 목록 키 끝에 값 값을 삽입합니다. </span><span> 517</span><span> * RPUSH 명령과 달리 RPUSHX 명령은 키가 존재하지 않을 때 아무 작업도 수행하지 않습니다. </span><span> 518</span><span> * @author 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>공개</span><span>함수</span> rpushx(<span>$sKey</span>, <span>$arValue</span> = <span>배열</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> * 키에 저장된 목록의 길이를 반환합니다. </span><span> 533</span><span> * @author 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>공개</span><span>함수</span> llen(<span>$s키</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은 두 번째 요소 등을 의미합니다. </span><span> 546</span><span> * 음수 <strong>index</strong>는 <strong>index</strong>에서 목록의 끝부터 시작하는 요소를 지정하는 데 사용됩니다. 이 접근 방식에서 -1은 마지막 요소를 나타내고, -2는 끝에서 두 번째 요소를 나타내는 식입니다. </span><span> 547</span><span> * 키 위치의 값이 리스트가 아닌 경우 에러를 반환합니다. </span><span> 548</span><span> * @author 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>공개</span><span>함수</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>$인덱스</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은 두 번째 요소 등을 의미합니다. </span><span> 562</span><span> * 인덱스가 범위를 벗어나면 오류가 반환됩니다. </span><span> 563</span><span> * @author zhaoyingnan 2015-11-03 14:27 </span><span> 564</span><span> * @param string $sKey </span><span> 565</span><span> * @param int $index key 목록에서 해당 첨자는 index입니다. </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>공개</span><span>함수</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>반환</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> * @author 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>공개</span><span>함수</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>반품</span><span>거짓</span><span>; </span><span> 589</span><span>$sPosion</span> = <span>in_array</span>(<span>$sPosion</span>, <span>배열</span>('BEFORE', 'AFTER ')) ? <span>strtoupper</span>(<span>$sPosion</span>) : '이전'<span>; </span><span> 590</span><span>반환</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> * 키에 저장된 목록에서 값이 value인 첫 번째 count 요소를 제거합니다. count 매개변수는 다음과 같은 방식으로 이 작업에 영향을 미칩니다. </span><span> 595</span><span> * count > 0: 처음부터 끝까지 값이 있는 요소를 제거합니다. </span><span> 596</span><span> * count < 0: 값이 있는 요소를 끝부터 처음까지 제거합니다. </span><span> 597</span><span> * count = 0: 값이 있는 모든 요소를 제거합니다. </span><span> 598</span><span> * 예를 들어 LREM list -2 "hello"는 목록에 저장된 목록에서 마지막 두 개의 "hello" 항목을 제거합니다. </span><span> 599</span><span> * 주의할 점은 키가 목록에 없으면 빈 목록으로 처리되므로 키가 없으면 이 명령이 반환됩니다. 0. </span><span> 600</span><span> * @author 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 < 0: 값이 있는 요소를 처음부터 끝까지 제거합니다. count = 0: 값이 value인 모든 요소를 제거합니다. </span><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>공개 함수 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은 두 번째 요소이므로 비유됩니다. </span><span> 616</span><span> * @author 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>공개</span><span>기능</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>반환</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(목록의 헤더)이고 두 번째 요소는 아래 첨자는 1 등입니다.</span><span> 631</span><span> * 오프셋은 음수일 수도 있으며, 이는 오프셋이 목록 끝에서부터 계산됨을 나타냅니다. 예를 들어 -1은 목록의 마지막 요소이고, -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>공개</span><span>함수</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> * @author 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>공개</span><span>기능</span> lpop(<span>$s키</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> * 키에 저장된 목록의 마지막 요소를 제거하고 반환합니다.</span><span> 658</span><span> * @author 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>공개</span><span>기능</span> rpop(<span>$s키</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> * 하나 이상의 지정된 멤버 요소를 컬렉션의 키에 추가합니다. </span><span> 672</span><span> * 하나 이상의 지정된 요소 멤버가 컬렉션 키에 이미 존재하는 경우 무시됩니다. </span><span> 673</span><span> * 컬렉션 키가 존재하지 않는 경우 새 컬렉션 키를 생성하고 컬렉션 키에 멤버 요소를 추가합니다. </span><span> 674</span><span> * 키 유형이 컬렉션이 아닌 경우 오류를 반환합니다. </span><span> 675</span><span> * @author 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>공개</span><span>기능</span> sadd(<span>$sKey</span>, <span>$arMember</span> = <span>배열</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>$arMember</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> * @author 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>공개</span><span>기능</span> Scard(<span>$s키</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> * @author zhaoyingnan 2015-11-03 22:13 </span><span> 707</span><span> * @param 배열 $arKey </span><span> 708</span><span> * @return 배열 </span><span> 709</span><span> *</span><span>*/</span><span> 710</span><span>공개</span><span>함수</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>배열</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> * @author zhaoyingnan 2015-11-04 10:16 </span><span> 720</span><span> * @param string $sNewKey </span><span> 721</span><span> * @param 배열 $arKey </span><span> 722</span><span> * @return int 결과 집합의 요소 수입니다. </span><span> 723</span><span> *</span><span>*/</span><span> 724</span><span>공개</span><span>함수</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>반환</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> * @author zhaoyingnan 2015-11-04 10:18 </span><span> 735</span><span> * @param 배열 $arKey </span><span> 736</span><span> * @return 배열 </span><span> 737</span><span> *</span><span>*/</span><span> 738</span><span>공개</span><span>기능</span> 소(<span>$arKey</span><span>) </span><span> 739</span><span> { </span><span> 740</span><span>if</span>(!<span>$arKey</span>)<span>return</span><span>배열</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> * @author zhaoyingnan 2015-11-04 10:23 </span><span> 748</span><span> * @param string $sNewKey </span><span> 749</span><span> * @param 배열 $arKey </span><span> 750</span><span> * @return int 결과 집합의 요소 수입니다. </span><span> 751</span><span> *</span><span>*/</span><span> 752</span><span>공개</span><span>기능</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>반환</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> * @author 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 멤버 요소가 세트 키의 멤버인 경우 멤버 요소가 키의 멤버가 아니거나 세트 키가 멤버가 아닌 경우 1을 반환합니다. 존재하면 0을 반환 </span><span> 766</span><span> *</span><span>*/</span><span> 767</span><span>공개</span><span>함수</span> sismember(<span>$sKey</span>, <span>$member</span><span>) </span><span> 768</span><span> { </span><span> 769</span><span>만약</span>(!