redis 스크립트 처리방법
LUA 스크립트를 활용해서 redis console 에서 처리하는 예제를 아래 남깁니다.
레디스 hash 에서 특정코드 검색해서 삭제하는 방법입니다
EVAL "
local hash_key = KEYS[1]
local condition = ARGV[1]
local fields = redis.call('HKEYS', hash_key)
local result = {}
for _, field in ipairs(fields) do
local value = redis.call('HGET', hash_key, field)
local startpos, endpos = string.find(value, condition)
if startpos then
redis.call('HDEL', hash_key, field)
result[#result + 1] = field
end
end
return result
" 1 test '24002'
test 해시키의 값에 24002 값이 있으면 삭제하고, 해당 필드값을 화면에 표시합니다.
다만, 해시 필드를 모두 가져와서 검색하기 때문에 느립니다.
하나의 세션을 잡기때문에 전체 성능에 영향은 주지 않을 것 같으나 검토는 필요합니다.
프로그램으로 안짜고, redis console 에서 실행할 수 있다는 것이 장점인데, 검색키워드 (condition) 에 날짜문자열(2024-04-20)를 줬는데 검색이 안되더라구요. 충분한 테스트가 필요할 듯 하네요.