Ring: 프로그래밍 언어와 가까운 캐시 인터페이스
#
user에 item을 추가해야 한다고 생각해 봅시다.
클래스가 없는 언어라면 아마도 user_add_item(user, item) 같은 코드를 쓸 것입니다.
아마 user_delete_item도 있고 user_clear_items도 있겠지요.
하지만 우리는 파이썬 프로그래머니까 보통 user.add_item(item) 같은 코드를 씁니다.
#
user에 속한 item들을 가져오는 함수가 있고 이 함수는 결과를 캐시하고 있다고 생각해 봅시다.
user.get_items() 같은 코드를 쓸 수도 있고 user.get_cached_items(storage) 같은 코드를 쓸 수도 있겠지요.
item의 목록이 업데이트 되었습니다. 이제 캐시를 무효화해야 합니다.
아마도 user.invalidate_items()나 user.delete_cached_items(storage) 같은 코드를 만들어야 하겠지요.
Ring에서는 user.get_items.delete() 를 호출합니다.
#
Ring은 이 아이디어에서부터 출발합니다.
38. Sub-functions
• & • python-memcached
value = function(10)
value = function
.get_or_update(10)
key = create_key(10)
value = client.get(key)
if value is None:
value = function(10)
client.set(key)
39.
40. Sub-functions
• &
•
•
•
•
• ...
value = function(10)
function.delete(10)
value = function.update(10)
value = function.execute(10)
value = function.get(10)