• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用redis缓存,缓存key值为区间值(可做处理),当传入区间中的一个区间数时,怎么找到对应的缓存

php 搞代码 4年前 (2022-01-22) 23次浏览 已收录 0个评论
文章目录[隐藏]

例如:
我现在有个一个数组
array(

<code>  '10000_20000'=>'上海',  '20001_30200'=>'北京',  '30201_30300'=>'天津',  '30301_40000'=>'深圳'</code>


现在,我要把数组中的每个值存到redis缓存中,缓存key值可以是数组key值经过任何处理之后的,这时我传入一个值38000,我想在缓存中找到key值含38000的缓存值,有什么好的办法吗

求大神指点啊!

2本文来源gao*daima.com搞@代#码&网6

搞gaodaima代码

回复内容:

例如:
我现在有个一个数组
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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用redis缓存,缓存key值为区间值(可做处理),当传入区间中的一个区间数时,怎么找到对应的缓存

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址