2014-07-10 4 views
0
나는 키의 결과를 얻을하고 수정 한 다음 다시 저장하는 jedis을 사용하고 싶은거야

,은 redis에서 원자 적으로 얻고 설정하는 방법이 있습니까?

String dataToModify = jedis.get(parent_id); 
//some modify eg: 
modifiedData = dataToModify + "modify"; 
jedis.set(parent_id, modifiedData); 

하지만 그때 깨달았 다른 사람이 get 사이에, 키 parent_id 데이터를 수정 한 경우 set이면 충돌이 발생합니다. 거래 도중 parent_id 키 값을 가져와야하므로 watch-multi-exec이 작동하지 않습니다. 이것을 원자 적으로 할 수있는 다른 방법이 있습니까? 감사합니다

답변

0

정확한 jedis 구문에 대해서는 확실하지 않지만 Redis의 WATCH/MULTI/EXEC을 사용하면이를 수행 할 수 있습니다 (즉, 자동으로 get/set 플로우를 실행합니다). 또는 워크 플로를 서버 측 루아 스크립트에 구현하면 원 자성이 보장됩니다.

0

하는 방법 (도 unix time라고도 함) 시대의 날짜 값이 숫자로 날짜를 치료하고 INCRBY 명령을 사용할 수 있습니다 이런 식으로 저장하는 방법에 대한 예 : :
jedis.incrby(parent_id, modify);