Heim  >  Artikel  >  Backend-Entwicklung  >  redis需要设置过期时间吗

redis需要设置过期时间吗

WBOY
WBOYOriginal
2016-06-06 20:43:221857Durchsuche

memcached一般都设置expire过期了自动删除,然后

<code class="lang-php">$arr = $mem->get($key);
if(empty($arr)){
$sql = "select ....";
$arr = $pdo->fetch();
$mem->set($key,$arr,10*60);
}
</code>

redis的PHP API只有一个setex设置过期时间,其他的list,zset都没看到,如果没有的话是不设置的缓存一直存在,内存一直在增加?如果缓存有更新的话怎么维护呢?
其实我想问的是redis的更新策略,zset的数据一直在内存中,如果数据有更新怎么维护呢?如果像memcache有失效期好了,但为什么它没有设计呢?

回复内容:

memcached一般都设置expire过期了自动删除,然后

<code class="lang-php">$arr = $mem->get($key);
if(empty($arr)){
$sql = "select ....";
$arr = $pdo->fetch();
$mem->set($key,$arr,10*60);
}
</code>

redis的PHP API只有一个setex设置过期时间,其他的list,zset都没看到,如果没有的话是不设置的缓存一直存在,内存一直在增加?如果缓存有更新的话怎么维护呢?
其实我想问的是redis的更新策略,zset的数据一直在内存中,如果数据有更新怎么维护呢?如果像memcache有失效期好了,但为什么它没有设计呢?

对于一般的key用EXPIRE命令。http://redis.io/commands/expire

不设置ttl当然会一直存在。set更新会覆盖原值。

list,zset 也是可以设置过期时间的,都是使用 EXPIRE 命令

一般是根据需求来进行设置

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn