国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
PHP Redis,phpredis
ホームページ php教程 php手冊(cè) PHP Redis,phpredis

PHP Redis,phpredis

Jun 13, 2016 am 08:51 AM
defined e php phpredis redis

PHP Redis,phpredis

<span>   1</span> <?php <span>if (!<span>defined</span>('BASEPATH')) <span>exit</span>('No direct script access allowed'<span>); 
</span><span>   2</span> <span>class</span><span> Myredis
</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,migrate,monitor,move,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,shutdown,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>private</span> <span>static</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>->host, <span>$this</span>-><span>port);
</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>****************** key ********************</span><span>*/</span>
<span>  24</span> 
<span>  25</span>     <span>/*</span><span>*
</span><span>  26</span> <span>     * 查找所有符合給定模式 pattern 的 key 。
</span><span>  27</span> <span>     * KEYS * 匹配數(shù)據(jù)庫中所有 key 。
</span><span>  28</span> <span>     * KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
</span><span>  29</span> <span>     * KEYS h*llo 匹配 hllo 和 heeeeello 等。
</span><span>  30</span> <span>     * KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
</span><span>  31</span> <span>     * 特殊符號(hào)用 \ 隔開。
</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    array
</span><span>  35</span> <span>     *</span><span>*/</span>
<span>  36</span>     <span>public</span> <span>function</span> keys(<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>     * 返回key是否存在。
</span><span>  44</span> <span>     * @author    zhaoyingnan    2015-10-16 17:40
</span><span>  45</span> <span>     * @param    string        $sKey        要檢測的 key
</span><span>  46</span> <span>     * @return    bool
</span><span>  47</span> <span>     *</span><span>*/</span>
<span>  48</span>     <span>public</span> <span>function</span> exists(<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>     * 設(shè)置key的過期時(shí)間。如果key已過期,將會(huì)被自動(dòng)刪除。設(shè)置了過期時(shí)間的key被稱之為volatile。
</span><span>  56</span> <span>     * 在key過期之前可以重新更新他的過期時(shí)間,也可以使用PERSIST命令刪除key的過期時(shí)間。
</span><span>  57</span> <span>     * @author    zhaoyingnan    2015-10-16 17:46
</span><span>  58</span> <span>     * @param    string        $sKey        key
</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>function</span> expire(<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>     * 這個(gè)命令和 EXPIRE 命令的作用類似,但是它以毫秒為單位設(shè)置 key 的生存時(shí)間,而不像 EXPIRE 命令那樣,以秒為單位。
</span><span>  70</span> <span>     * @author    zhaoyingnan    2015-10-19 16:00
</span><span>  71</span> <span>     * @param    string        $sKey        key
</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>$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>return</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類似,都用于為 key 設(shè)置生存時(shí)間。不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳 Unix timestamp 。
</span><span>  83</span> <span>     * @author    zhaoyingnan    2015-10-16 18:03
</span><span>  84</span> <span>     * @param    string        $sKey        key
</span><span>  85</span> <span>     * @param    int            $iUnixtimestamp    UNIX 時(shí)間戳(秒)
</span><span>  86</span> <span>     * @return    bool
</span><span>  87</span> <span>     *</span><span>*/</span>
<span>  88</span>     <span>public</span> <span>function</span> expireat(<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 這個(gè)命令和 EXPIREAT命令類似,但它以毫秒為單位設(shè)置 key 的過期 unix 時(shí)間戳,而不是像 EXPIREAT 那樣,以秒為單位。
</span><span>  96</span> <span>     * EXPIREAT 的作用和 EXPIRE類似,都用于為 key 設(shè)置生存時(shí)間。不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳 Unix timestamp 。
</span><span>  97</span> <span>     * @author    zhaoyingnan    2015-10-16 18:03
</span><span>  98</span> <span>     * @param    string        $sKey        key
</span><span>  99</span> <span>     * @param    int            $iMilliseconds    UNIX 時(shí)間戳(毫秒)
</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>$iMilliseconds</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>return</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>     * 以秒為單位,返回給定 key 的剩余生存時(shí)間(TTL, time to live)。
</span><span> 110</span> <span>     * @author    zhaoyingnan    2015-10-16 17:52
</span><span> 111</span> <span>     * @param    string        $sKey        key
</span><span> 112</span> <span>     * @return    int            當(dāng) key 不存在時(shí),返回 -2 。當(dāng) key 存在但沒有設(shè)置剩余生存時(shí)間時(shí),返回 -1 。否則,以秒為單位,返回 key 的剩余生存時(shí)間。
</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>     * 這個(gè)命令類似于 TTL 命令,但它以毫秒為單位返回 key 的剩余生存時(shí)間,而不是像 TTL 命令那樣,以秒為單位。
</span><span> 122</span> <span>     * @author    zhaoyingnan    2015-10-19 16:06
</span><span> 123</span> <span>     * @param    string        $sKey        key
</span><span> 124</span> <span>     * @return    int            當(dāng) key 不存在時(shí),返回 -2 。當(dāng) key 存在但沒有設(shè)置剩余生存時(shí)間時(shí),返回 -1 。否則,以秒為單位,返回 key 的剩余生存時(shí)間。
</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>     * 將 key 原子性地從當(dāng)前實(shí)例傳送到目標(biāo)實(shí)例的指定數(shù)據(jù)庫上,一旦傳送成功, key 保證會(huì)出現(xiàn)在目標(biāo)實(shí)例上,而當(dāng)前實(shí)例上的 key 會(huì)被刪除。
</span><span> 134</span> <span>     * 這個(gè)命令是一個(gè)原子操作,它在執(zhí)行的時(shí)候會(huì)阻塞進(jìn)行遷移的兩個(gè)實(shí)例,直到以下任意結(jié)果發(fā)生:遷移成功,遷移失敗,等到超時(shí)。
</span><span> 135</span> <span>     * @author    zhaoyingnan    2015-10-16 18:24
</span><span> 136</span> <span>     * @param    string        $sHost        目標(biāo) ip
</span><span> 137</span> <span>     * @param    int            $iPort        端口
</span><span> 138</span> <span>     * @param    string        $sKey        要操作的 key
</span><span> 139</span> <span>     * @param    int            $iDb        目標(biāo)實(shí)例的數(shù)據(jù)庫的編號(hào)
</span><span> 140</span> <span>     * @param    int            $iTimeout    timeout 參數(shù)以毫秒為格式,指定當(dāng)前實(shí)例和目標(biāo)實(shí)例進(jìn)行溝通的最大間隔時(shí)間。這說明操作并不一定要在 timeout 毫秒內(nèi)完成,只是說數(shù)據(jù)傳送的時(shí)間不能超過這個(gè) timeout 數(shù)。
</span><span> 141</span> <span>     * @return    bool        注:當(dāng)目標(biāo)實(shí)例的指定的數(shù)據(jù)庫中存在指定的 key 返回 FALS,當(dāng)前實(shí)例中的 key 并沒有被刪除,也沒有移動(dòng)到目標(biāo)實(shí)例上,目標(biāo)實(shí)例上的 key 還是原來的
</span><span> 142</span> <span>     *</span><span>*/</span>
<span> 143</span>     <span>public</span> <span>function</span> migrate(<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>return</span> <span>FALSE</span><span>;
</span><span> 146</span>         <span>return</span> self::<span>$redis</span>->migrate(<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>     * 將當(dāng)前數(shù)據(jù)庫的 key 移動(dòng)到給定的數(shù)據(jù)庫 db 當(dāng)中。
</span><span> 151</span> <span>     * 如果當(dāng)前數(shù)據(jù)庫(源數(shù)據(jù)庫)和給定數(shù)據(jù)庫(目標(biāo)數(shù)據(jù)庫)有相同名字的給定 key ,或者 key 不存在于當(dāng)前數(shù)據(jù)庫,那么 MOVE 沒有任何效果。
</span><span> 152</span> <span>     * @author    zhaoyingnan    2015-10-19 15:42
</span><span> 153</span> <span>     * @param    string        $sKey    key
</span><span> 154</span> <span>     * @param    int            $iDb    移動(dòng)到給定的數(shù)據(jù)庫 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>     * 移除給定key的生存時(shí)間,將這個(gè) key 從『易失的』(帶生存時(shí)間 key )轉(zhuǎn)換成『持久的』(一個(gè)不帶生存時(shí)間、永不過期的 key )。
</span><span> 165</span> <span>     * @author    zhaoyingnan    2015-10-19 15:55
</span><span> 166</span> <span>     * @param    string        $sKey    key
</span><span> 167</span> <span>     * @return    bool        當(dāng)生存時(shí)間移除成功時(shí),返回 1  如果 key 不存在或 key 沒有設(shè)置生存時(shí)間,返回 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>     * 從當(dāng)前數(shù)據(jù)庫返回一個(gè)隨機(jī)的key。
</span><span> 177</span> <span>     * @author    zhaoyingnan    2015-10-19 16:08
</span><span> 178</span> <span>     * @return    string        如果數(shù)據(jù)庫沒有任何key,返回nil,否則返回一個(gè)隨機(jī)的key。    
</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相同,將返回一個(gè)錯(cuò)誤。如果newkey已經(jīng)存在,則值將被覆蓋。
</span><span> 187</span> <span>     * @author    zhaoyingnan    2015-10-19 16:12
</span><span> 188</span> <span>     * @param    string        $sKey    key
</span><span> 189</span> <span>     * @param    string        $sNewKey    重命名后的 key 值    
</span><span> 190</span> <span>     * @return    bool
</span><span> 191</span> <span>     *</span><span>*/</span>
<span> 192</span>     <span>public</span> <span>function</span> <span>rename</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>     * 當(dāng)且僅當(dāng) newkey 不存在時(shí),將 key 改名為 newkey 。當(dāng) key 不存在時(shí),返回一個(gè)錯(cuò)誤。
</span><span> 200</span> <span>     * @author    zhaoyingnan    2015-10-19 16:16
</span><span> 201</span> <span>     * @param    string        $sKey    key
</span><span> 202</span> <span>     * @param    string        $sNewKey    重命名后的 key 值    
</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>     * 返回 key 所儲(chǔ)存的值的類型。
</span><span> 213</span> <span>     * @author    zhaoyingnan    2015-10-19 16:25
</span><span> 214</span> <span>     * @param    string        $sKey    key
</span><span> 215</span> <span>     * @return    string        none (key不存在) string (字符串) list (列表) 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>****************** string ********************</span><span>*/</span>
<span> 223</span> 
<span> 224</span>     <span>/*</span><span>*
</span><span> 225</span> <span>     * 將key和value對(duì)應(yīng)。如果key已經(jīng)存在了,它會(huì)被覆蓋,而不管它是什么類型。
</span><span> 226</span> <span>     * @author    zhaoyingnan    2015-10-19 16:35
</span><span> 227</span> <span>     * @param    string        $sKey        key
</span><span> 228</span> <span>     * @param    string        $sValue        key 對(duì)應(yīng)的值
</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>     * 設(shè)置key對(duì)應(yīng)字符串value,并且設(shè)置key在給定的 seconds 時(shí)間之后超時(shí)過期。
</span><span> 239</span> <span>     * @author    zhaoyingnan    2015-11-03 11:25
</span><span> 240</span> <span>     * @param    string        $sKey        被操作的 key
</span><span> 241</span> <span>     * @param    int            $iSecond    生命周期(秒)
</span><span> 242</span> <span>     * @param    string        $sValue        key 對(duì)應(yīng)的 value
</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>     * 設(shè)置key對(duì)應(yīng)字符串value,并且設(shè)置key在給定的 milliseconds 時(shí)間之后超時(shí)過期。
</span><span> 254</span> <span>     * @author    zhaoyingnan    2015-11-03 11:25
</span><span> 255</span> <span>     * @param    string        $sKey        被操作的 key
</span><span> 256</span> <span>     * @param    int            $iMillSecond    生命周期(毫秒)
</span><span> 257</span> <span>     * @param    string        $sValue        key 對(duì)應(yīng)的 value
</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>$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>return</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>     * 自動(dòng)將key對(duì)應(yīng)到value并且返回原來key對(duì)應(yīng)的value。如果key存在但是對(duì)應(yīng)的value不是字符串,就返回錯(cuò)誤。
</span><span> 269</span> <span>     * @author    zhaoyingnan    2015-10-19 18:10
</span><span> 270</span> <span>     * @param    string        $sKey        key
</span><span> 271</span> <span>     * @param    string        $sValue        設(shè)置的新的值
</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>     * 對(duì)應(yīng)給定的keys到他們相應(yīng)的values上。MSET會(huì)用新的value替換已經(jīng)存在的value,就像普通的SET命令一樣。
</span><span> 282</span> <span>     * 如果你不想覆蓋已經(jīng)存在的values,請(qǐng)參看命令MSETNX。
</span><span> 283</span> <span>     * MSET是原子的,所以所有給定的keys是一次性set的??蛻舳瞬豢赡芸吹竭@種一部分keys被更新而另外的沒有改變的情況。
</span><span> 284</span> <span>     * @author    zhaoyingnan    2015-11-03 11:04
</span><span> 285</span> <span>     * @param    array        $arArray    被設(shè)置的關(guān)聯(lián)數(shù)組
</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>     * 對(duì)應(yīng)給定的keys到他們相應(yīng)的values上。
</span><span> 296</span> <span>     * 只要有一個(gè)key已經(jīng)存在,MSETNX一個(gè)操作都不會(huì)執(zhí)行。 
</span><span> 297</span> <span>     * 由于這種特性,MSETNX可以實(shí)現(xiàn)要么所有的操作都成功,要么一個(gè)都不執(zhí)行,這樣可以用來設(shè)置不同的key,來表示一個(gè)唯一的對(duì)象的不同字段。
</span><span> 298</span> <span>     * MSETNX是原子的,所以所有給定的keys是一次性set的??蛻舳瞬豢赡芸吹竭@種一部分keys被更新而另外的沒有改變的情況。
</span><span> 299</span> <span>     * @author    zhaoyingnan    2015-11-03 11:11
</span><span> 300</span> <span>     * @param    array        $arArray    被設(shè)置的關(guān)聯(lián)數(shù)組
</span><span> 301</span> <span>     * @return    bool        TRUE 所有的key被set, FALSE 沒有key被set(至少其中有一個(gè)key是存在的)
</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>     * 如果key不存在,就設(shè)置key對(duì)應(yīng)字符串value。
</span><span> 311</span> <span>     * 在這種情況下,該命令和SET一樣。當(dāng)key已經(jīng)存在時(shí),就不做任何操作。
</span><span> 312</span> <span>     * SETNX是"SET if Not eXists"。
</span><span> 313</span> <span>     * @author    zhaoyingnan    2015-11-03 11:49
</span><span> 314</span> <span>     * @param    string        $sKey        key
</span><span> 315</span> <span>     * @param    string        $sValue        值
</span><span> 316</span> <span>     * @return    bool        TRUE key被set, FALSE key沒有被set
</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>     * 返回key的value。如果key不存在,返回特殊值nil。如果key的value不是string,就返回錯(cuò)誤,因?yàn)镚ET只處理string類型的values。
</span><span> 326</span> <span>     * @author    zhaoyingnan    2015-10-19 17:57
</span><span> 327</span> <span>     * @param    string        $sKey        key
</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>     * 返回所有指定的key的value。對(duì)于每個(gè)不對(duì)應(yīng)string或者不存在的key,都返回特殊值nil。正因?yàn)榇耍@個(gè)操作從來不會(huì)失敗。
</span><span> 338</span> <span>     * @author    zhaoyingnan    2015-11-03 10:55
</span><span> 339</span> <span>     * @param    array        $arKey        要獲取的 key 的數(shù)組
</span><span> 340</span> <span>     * @return    array        redis返回的是以數(shù)字為索引的數(shù)組,這里返回的是一個(gè)關(guān)聯(lián)數(shù)組
</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>     * 如果 key 已經(jīng)存在,并且值為字符串,那么這個(gè)命令會(huì)把 value 追加到原來值(value)的結(jié)尾。
</span><span> 351</span> <span>     * 如果 key 不存在,那么它將首先創(chuàng)建一個(gè)空字符串的key,再執(zhí)行追加操作,這種情況 APPEND 將類似于 SET 操作。
</span><span> 352</span> <span>     * @author    zhaoyingnan    2015-10-19 16:34
</span><span> 353</span> <span>     * @param    string        $sKey        key
</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>     * 對(duì)key對(duì)應(yīng)的數(shù)字做加1操作。如果key不存在,那么在操作之前,這個(gè)key對(duì)應(yīng)的值會(huì)被置為0。
</span><span> 365</span> <span>     * 如果key有一個(gè)錯(cuò)誤類型的value或者是一個(gè)不能表示成數(shù)字的字符串,就返回錯(cuò)誤。
</span><span> 366</span> <span>     * 這個(gè)操作最大支持在64位有符號(hào)的整型數(shù)字。
</span><span> 367</span> <span>     * @author    zhaoyingnan    2015-10-19 17:44
</span><span> 368</span> <span>     * @param    string        $sKey        key
</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>     * 將key對(duì)應(yīng)的數(shù)字加decrement。如果key不存在,操作之前,key就會(huì)被置為0。
</span><span> 379</span> <span>     * 如果key的value類型錯(cuò)誤或者是個(gè)不能表示成數(shù)字的字符串,就返回錯(cuò)誤。這個(gè)操作最多支持64位有符號(hào)的正型數(shù)字。
</span><span> 380</span> <span>     * @author    zhaoyingnan    2015-10-19 17:44
</span><span> 381</span> <span>     * @param    string        $sKey        key
</span><span> 382</span> <span>     * @param    int            $iIncrement    步進(jìn)值
</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>     * 將key對(duì)應(yīng)的數(shù)字加decrement。如果key不存在,操作之前,key就會(huì)被置為0。
</span><span> 393</span> <span>     * 如果key的value類型錯(cuò)誤或者是個(gè)不能表示成數(shù)字的字符串,就返回錯(cuò)誤。這個(gè)操作最多支持64位有符號(hào)的正型數(shù)字。
</span><span> 394</span> <span>     * @author    zhaoyingnan    2015-10-19 17:44
</span><span> 395</span> <span>     * @param    string        $sKey        key
</span><span> 396</span> <span>     * @param    fload        $floatIncrement    步進(jìn)值
</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>     * 對(duì)key對(duì)應(yīng)的數(shù)字做減1操作。如果key不存在,那么在操作之前,這個(gè)key對(duì)應(yīng)的值會(huì)被置為0。
</span><span> 407</span> <span>     * 如果key有一個(gè)錯(cuò)誤類型的value或者是一個(gè)不能表示成數(shù)字的字符串,就返回錯(cuò)誤。這個(gè)操作最大支持在64位有符號(hào)的整型數(shù)字。
</span><span> 408</span> <span>     * @author    zhaoyingnan    2015-10-19 17:44
</span><span> 409</span> <span>     * @param    string        $sKey        key
</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>     * 將key對(duì)應(yīng)的數(shù)字減decrement。如果key不存在,操作之前,key就會(huì)被置為0。
</span><span> 420</span> <span>     * 如果key的value類型錯(cuò)誤或者是個(gè)不能表示成數(shù)字的字符串,就返回錯(cuò)誤。這個(gè)操作最多支持64位有符號(hào)的正型數(shù)字。
</span><span> 421</span> <span>     * @author    zhaoyingnan    2015-10-19 17:44
</span><span> 422</span> <span>     * @param    string        $sKey        key
</span><span> 423</span> <span>     * @param    int            $iIncrement    步進(jìn)值
</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>     * 這個(gè)命令是被改成GETRANGE的,在小于2.0的Redis版本中叫SUBSTR。 
</span><span> 434</span> <span>     * 返回key對(duì)應(yīng)的字符串value的子串,這個(gè)子串是由start和end位移決定的(兩者都在string內(nèi))。
</span><span> 435</span> <span>     * 可以用負(fù)的位移來表示從string尾部開始數(shù)的下標(biāo)。所以-1就是最后一個(gè)字符,-2就是倒數(shù)第二個(gè),以此類推。
</span><span> 436</span> <span>     * 這個(gè)函數(shù)處理超出范圍的請(qǐng)求時(shí),都把結(jié)果限制在string內(nèi)。
</span><span> 437</span> <span>     * @author    zhaoyingnan    2015-10-19 18:04
</span><span> 438</span> <span>     * @param    string        $sKey        key
</span><span> 439</span> <span>     * @pause    int            $iStart        開始位置
</span><span> 440</span> <span>     * @pause    int            $iEnd        結(jié)束位置
</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>     * 返回key的string類型value的長度。如果key對(duì)應(yīng)的非string類型,就返回錯(cuò)誤。
</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>****************** list ********************</span><span>*/</span>
<span> 462</span> 
<span> 463</span>     <span>/*</span><span>*
</span><span> 464</span> <span>     * 將所有指定的值插入到存于 key 的列表的頭部。如果 key 不存在,那么在進(jìn)行 push 操作前會(huì)創(chuàng)建一個(gè)空列表。 
</span><span> 465</span> <span>     * 如果 key 對(duì)應(yīng)的值不是一個(gè) list 的話,那么會(huì)返回一個(gè)錯(cuò)誤。
</span><span> 466</span> <span>     * 可以使用一個(gè)命令把多個(gè)元素 push 進(jìn)入列表,只需在命令末尾加上多個(gè)指定的參數(shù)。
</span><span> 467</span> <span>     * 元素是從最左端的到最右端的、一個(gè)接一個(gè)被插入到 list 的頭部。 所以對(duì)于這個(gè)命令例子 LPUSH mylist a b c,返回的列表是 c 為第一個(gè)元素, b 為第二個(gè)元素, a 為第三個(gè)元素。
</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    需要 push 到 key 中的值的數(shù)組
</span><span> 471</span> <span>     * @return    int            在 push 操作后的 list 長度。
</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>     * 只有當(dāng) key 已經(jīng)存在并且存著一個(gè) list 的時(shí)候,在這個(gè) key 下面的 list 的頭部插入 value。 
</span><span> 483</span> <span>     * 與 LPUSH 相反,當(dāng) key 不存在的時(shí)候不會(huì)進(jìn)行任何操作。
</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    需要 push 到 key 中的值的數(shù)組
</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 的列表的尾部插入所有指定的值。如果 key 不存在,那么會(huì)創(chuàng)建一個(gè)空的列表然后再進(jìn)行 push 操作。 
</span><span> 499</span> <span>     * 當(dāng) key 保存的不是一個(gè)列表,那么會(huì)返回一個(gè)錯(cuò)誤。
</span><span> 500</span> <span>     * 可以使用一個(gè)命令把多個(gè)元素打入隊(duì)列,只需要在命令后面指定多個(gè)參數(shù)。
</span><span> 501</span> <span>     * 元素是從左到右一個(gè)接一個(gè)從列表尾部插入。 比如命令 RPUSH mylist a b c 會(huì)返回一個(gè)列表,其第一個(gè)元素是 a ,第二個(gè)元素是 b ,第三個(gè)元素是 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    需要 push 到 key 中的值的數(shù)組
</span><span> 505</span> <span>     * @return    int            在 push 操作后的 list 長度。
</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 插入到列表 key 的表尾, 當(dāng)且僅當(dāng) key 存在并且是一個(gè)列表。 
</span><span> 517</span> <span>     * 和 RPUSH 命令相反, 當(dāng) key 不存在時(shí),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    需要 push 到 key 中的值的數(shù)組
</span><span> 521</span> <span>     * @return    int            在 push 操作后的 list 長度。
</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>     * 返回存儲(chǔ)在 key 里的list的長度。 
</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        如果 key 不存在,那么就被看作是空list,并且返回長度為 0。 當(dāng)存儲(chǔ)在 key 里的值不是一個(gè)list的話,會(huì)返回error。
</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>     * 返回 key 對(duì)應(yīng)的列表里的元素的索引 index 的值
</span><span> 545</span> <span>     * 下標(biāo)是從0開始索引的,所以 0 是表示第一個(gè)元素, 1 表示第二個(gè)元素,并以此類推。 
</span><span> 546</span> <span>     * 負(fù)數(shù)索引用于指定從列表尾部開始索引的元素。在這種方法下,-1 表示最后一個(gè)元素,-2 表示倒數(shù)第二個(gè)元素,并以此往前推。
</span><span> 547</span> <span>     * 當(dāng) key 位置的值不是一個(gè)列表的時(shí)候,會(huì)返回一個(gè)error。
</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 對(duì)應(yīng)的列表中的 index 索引
</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>     * 設(shè)置 index 位置的list元素的值為 value。
</span><span> 561</span> <span>     * 下標(biāo)是從0開始索引的,所以 0 是表示第一個(gè)元素, 1 表示第二個(gè)元素,并以此類推。 
</span><span> 562</span> <span>     * 當(dāng)index超出范圍時(shí)會(huì)返回一個(gè)error。
</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 對(duì)應(yīng)的 list 中小標(biāo)為 index
</span><span> 566</span> <span>     * @param    string        $sValue        被設(shè)置的值
</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>     * 把 value 插入存于 key 的列表中在基準(zhǔn)值 pivot 的前面或后面。
</span><span> 577</span> <span>     * 當(dāng) key 不存在時(shí),這個(gè)list會(huì)被看作是空list,任何操作都不會(huì)發(fā)生。
</span><span> 578</span> <span>     * 當(dāng) key 存在,但保存的不是一個(gè)list的時(shí)候,會(huì)返回error。
</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    在基準(zhǔn)值前面或者后面(BEFORE or AFTER)
</span><span> 582</span> <span>     * @param    string        $pivot        列表中的基準(zhǔn)值
</span><span> 583</span> <span>     * @param    string        $sValue        被插入的值
</span><span> 584</span> <span>     * @return    mix            經(jīng)過插入操作后的list長度,或者當(dāng) pivot 值找不到的時(shí)候返回 -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>(<span>$sPosion</span>, <span>array</span>('BEFORE', 'AFTER')) ? <span>strtoupper</span>(<span>$sPosion</span>) : 'BEFORE'<span>;
</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 的列表里移除前 count 次出現(xiàn)的值為 value 的元素。 這個(gè) count 參數(shù)通過下面幾種方式影響這個(gè)操作:
</span><span> 595</span> <span>     * count > 0: 從頭往尾移除值為 value 的元素。
</span><span> 596</span> <span>     * count <span> 597</span> <span>     * count = 0: 移除所有值為 value 的元素。
</span><span> 598</span> <span>     * 比如, LREM list -2 "hello" 會(huì)從存于 list 的列表里移除最后兩個(gè)出現(xiàn)的 "hello"。
</span><span> 599</span> <span>     * 需要注意的是,如果list里沒有存在key就會(huì)被當(dāng)作空list處理,所以當(dāng) key 不存在的時(shí)候,這個(gè)命令會(huì)返回 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: 從頭往尾移除值為 value 的元素。 count <span> 603</span> <span>     * @param    string        $sValue        要?jiǎng)h除的值
</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>     * 修剪(trim)一個(gè)已存在的 list,這樣 list 就會(huì)只包含指定范圍的指定元素。
</span><span> 615</span> <span>     * start 和 stop 都是由0開始計(jì)數(shù)的, 這里的 0 是列表里的第一個(gè)元素(表頭),1 是第二個(gè)元素,以此類推。
</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        指定范圍內(nèi)的開始位置
</span><span> 619</span> <span>     * @param    int            $iEnd        制定范圍內(nèi)的結(jié)束位置
</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>     * 返回存儲(chǔ)在 key 的列表里指定范圍內(nèi)的元素。
</span><span> 630</span> <span>     * start 和 end 偏移量都是基于0的下標(biāo),即list的第一個(gè)元素下標(biāo)是0(list的表頭),第二個(gè)元素下標(biāo)是1,以此類推。
</span><span> 631</span> <span>     * 偏移量也可以是負(fù)數(shù),表示偏移量是從list尾部開始計(jì)數(shù)。 例如, -1 表示列表的最后一個(gè)元素,-2 是倒數(shù)第二個(gè),以此類推。
</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        結(jié)束位置
</span><span> 636</span> <span>     * @return    array
</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>     * 移除并且返回 key 對(duì)應(yīng)的 list 的第一個(gè)元素。
</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>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 的 list 的最后一個(gè)元素。
</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>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>****************** set ********************</span><span>*/</span>
<span> 669</span> 
<span> 670</span>     <span>/*</span><span>*
</span><span> 671</span> <span>     * 添加一個(gè)或多個(gè)指定的member元素到集合的 key中.
</span><span> 672</span> <span>     * 指定的一個(gè)或者多個(gè)元素member 如果已經(jīng)在集合key中存在則忽略.
</span><span> 673</span> <span>     * 如果集合key 不存在,則新建集合key,并添加member元素到集合key中.
</span><span> 674</span> <span>     * 如果key 的類型不是集合則返回錯(cuò)誤.
</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    被添加的元素的數(shù)組
</span><span> 678</span> <span>     * @return    int            返回新成功添加到集合里元素的數(shù)量,不包括已經(jīng)存在于集合中的元素.
</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>$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>return</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>     * 返回集合存儲(chǔ)的key的基數(shù) (集合元素的數(shù)量).
</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>public</span> <span>function</span> scard(<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>     * 返回一個(gè)集合與給定集合的差集的元素.
</span><span> 706</span> <span>     * @author    zhaoyingnan    2015-11-03 22:13
</span><span> 707</span> <span>     * @param    array        $arKey
</span><span> 708</span> <span>     * @return    array
</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, 不同之處在于該命令不返回結(jié)果集,而是將結(jié)果存放在destination集合中.
</span><span> 718</span> <span>     * 如果destination 已經(jīng)存在, 則將其覆蓋重寫.
</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    array        $arKey
</span><span> 722</span> <span>     * @return    int            結(jié)果集元素的個(gè)數(shù).
</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>return</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    array        $arKey
</span><span> 736</span> <span>     * @return    array
</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::<sp></sp></span></span>
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPで現(xiàn)在のセッションIDを取得する方法は? PHPで現(xiàn)在のセッションIDを取得する方法は? Jul 13, 2025 am 03:02 AM

PHPで現(xiàn)在のセッションIDを取得する方法は、session_id()関數(shù)を使用することですが、session_start()を呼び出して正常に取得する必要があります。 1。Session_start()を呼び出してセッションを開始します。 2。Session_Id()を使用してセッションIDを読み取り、ABC123DEF456GHI789に似た文字列を出力します。 3.返品が空の場合は、Session_start()が欠落しているかどうか、ユーザーが初めてアクセスするか、セッションが破壊されるかを確認(rèn)します。 4.セッションIDは、ロギング、セキュリティ検証、およびクロスレクエスト通信に使用できますが、セキュリティに注意する必要があります。セッションが正しく有効になり、IDが正常に取得できることを確認(rèn)してください。

PHPストリングからサブストリングを取得します PHPストリングからサブストリングを取得します Jul 13, 2025 am 02:59 AM

PHP文字列からサブストリングを抽出するには、Substr()関數(shù)を使用できます。これはSyntax substr(String $ string、int $ start、?int $ length = null)であり、長さが指定されていない場合は、端まで傍受されます。中國語などのマルチバイト文字を処理する場合、MB_Substr()関數(shù)を使用して、文字化けコードを避ける必要があります。特定のセパレーターに従って文字列を傍受する必要がある場合は、exploit()を使用するか、strpos()とsubstr()を組み合わせて、ファイル名拡張子またはドメイン名を抽出するなどの実裝できます。

PHPコードの単體テストをどのように実行しますか? PHPコードの単體テストをどのように実行しますか? Jul 13, 2025 am 02:54 AM

unittestinginphpinvolvevidevifignivision like like fike fikionsionsormethodstocatchsearlyandensureliablerefactoring.1)setupphpunitviacomposer、createatestdirectory、and configureautoloadandphpunit.xml.2)

文字列をPHPの配列に分割する方法 文字列をPHPの配列に分割する方法 Jul 13, 2025 am 02:59 AM

PHPでは、最も一般的な方法は、exploit()関數(shù)を使用して文字列を配列に分割することです。この関數(shù)は、指定された區(qū)切り文字を介して文字列を複數(shù)の部分に分割し、配列を返します。構(gòu)文はエクスプロイト(セパレーター、文字列、制限)であり、セパレーターはセパレーターであり、文字列は元の文字列であり、制限はセグメントの最大數(shù)を制御するオプションのパラメーターです。たとえば、$ str = "Apple、Banana、Orange"; $ arr = Explode( "、"、$ str);結(jié)果は["apple"、 "banaです

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時(shí)間の取得、実行時(shí)間の測定、操作時(shí)點(diǎn)と期間の測定、分析時(shí)間のフォーマットなど、時(shí)間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時(shí)間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時(shí)間を測定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時(shí)點(diǎn)(Time_Point)と期間(期間)は相互運(yùn)用可能ですが、ユニットの互換性と時(shí)計(jì)エポック(エポック)に注意を払う必要があります

PHPの別のページにセッション変數(shù)を渡す方法は? PHPの別のページにセッション変數(shù)を渡す方法は? Jul 13, 2025 am 02:39 AM

PHPでは、セッション変數(shù)を別のページに渡すために、キーはセッションを正しく開始し、同じ$ _Sessionキー名を使用することです。 1.各ページにセッション変數(shù)を使用する前に、session_start()と呼ばれ、スクリプトの前面に配置する必要があります。 2。$ _Session ['username'] = 'Johndoe'などのセッション変數(shù)を設(shè)定します。 3。別のページでsession_start()を呼び出した後、同じキー名を介して変數(shù)にアクセスします。 4.各ページでsession_start()が呼び出されることを確認(rèn)し、事前にコンテンツの出力を避け、サーバーのセッションストレージパスが書き込み可能であることを確認(rèn)してください。 5.SESを使用します

PHPは環(huán)境変數(shù)をどのように処理しますか? PHPは環(huán)境変數(shù)をどのように処理しますか? Jul 14, 2025 am 03:01 AM

toaccessenvironmentvariablesinphp、usegetenv()または$ _envsuperglobal.1.getenv( 'var_name')retievessaspecificvariable.2。$ _ en v ['var_name'] AccessESSESESSVARIABLESIFVARIABLES_ORDERINPHP.INIINCLUDES "E" .SETVARIABLESVIACLIWITHVAR = ValuePhpscript.php、inapach

See all articles