例如:
我現在有一個陣列
array(
<code> '10000_20000'=>'上海', '20001_30200'=>'北京', '30201_30300'=>'天津', '30301_40000'=>'深圳'</code>
)
現在,我要把數組中的每個值存到redis緩存中,緩存key值可以是數組key值經過任何處理之後的,這時我傳入一個值38000,我想在緩存中找到key值含38000的快取值,有什麼好的方法嗎
求大神指點啊!
例如:
我現在有一個陣列
array(
<code> '10000_20000'=>'上海', '20001_30200'=>'北京', '30201_30300'=>'天津', '30301_40000'=>'深圳'</code>
)
現在,我要把數組中的每個值存到redis緩存中,緩存key值可以是數組key值經過任何處理之後的,這時我傳入一個值38000,我想在緩存中找到key值含38000的快取值,有什麼好的方法嗎
求大神指點啊!
//如果只是數組key很多,但value不大,使用有序集合
<code>$redis->zAdd('key', 10000, '上海'); $redis->zAdd('key', 20001, '北京'); $redis->zAdd('key', 30201, '天津'); $redis->zAdd('key', 30301, '深圳'); $redis->zAdd('key', 40001, '非法'); $index = 38000; $value = $redis->zRangeByScore('key', $index, '+inf', ['limit' => [0, 1]]); // 深圳</code>
這個資料又沒規律
我的想法,foreach,之後取出右邊部分,去比較大小,如果剛好大於等於3800,就跳出循環,返回當前鍵值。
當然,格式必須跟你現在的一致,從小到大
redis-cli中有個命令列: keys [patten], patten可以是正規表示式,找以38000結尾的key指令為:keys *38000。對應的phpRedis的方法名稱為:keys, getKeys,具體可以參考:keys&getKeys