使用redis緩存,快取key值為區間值(可做處理),當傳入區間中的一個區間數時,怎麼找到對應的快取

WBOY
發布: 2023-03-02 13:04:01
原創
1669 人瀏覽過

例如:
我現在有一個陣列
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

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!