데이터베이스 scrumblr
로 사용되는 웹 애플리케이션을 설치했습니다 .redis
제가 하려는 것은 30일 동안 비활성 상태이거나 30일 동안 액세스되지 않은 모든 키를 삭제하는 것입니다.
나는 달렸다
redis-cli KEYS*
모든 키를 반환하지만 타임스탬프는 표시하지 않습니다.
모든 비활성 키를 찾아서 삭제하는 스크립트나 명령이 매일 특정 시간에 실행될 수 있습니까?
답변1
당신이 사용할 수있는객체 유휴 시간지정된 키에 저장된 객체가 유휴 상태(읽기 또는 쓰기 작업으로 요청되지 않음) 이후의 시간(초)을 반환하는 명령입니다.
샘플 코드는 다음과 같습니다.
#!/bin/sh
redis-cli -p 6379 keys "*" | while read LINE ;
do
val=`redis-cli -p 6379 object idletime $LINE`;
if [ $val -gt $((30 * 24 * 60 * 60)) ];
then
echo "$LINE";
# del=`redis-cli -p 6379 del $LINE`; # be careful with del
# echo $del;
fi
done;
상황에 따라 다음 redis-cli -p 6379
으로 대체할 수 있습니다.
redis-cli -h redis_host -p redis_port -a redis_password
답변2
짧은 대답: 아니요.
긴 대답: 키를 반복할 수 있습니다( KEYS
출력은 -프로덕션 환경에서는 이 명령을 사용하지 마세요!)를 사용하면 SCAN
각 키에 대해 명령이 호출되고 OBJECT IDLETIME
응답에 따라 삭제됩니다.
더 긴 답변 : 실제로 scrumpr를 변경할 수 있습니다원천Redis가 30일 후에 자동으로 키를 만료시키도록 합니다. 의심되는 파일은 으로 보이는데 lib/data/redis.js
, 패치는 (방, 보드, 카드) 쓴 후 각 키에 or 명령어만 사용하면 되는 문제인 것 같습니다 SET...EX
.EXPIRE