I think it would be useful to support a scenario of

    someValue = dalli_client.gets('some-key')
    someValue.data = 'change the value!'
    dalli_client.set('some-key', someValue)

so the user doesn't even have to think about CAS.

If we return an array, the user I guess could do something like

    someValue = dalli_client.gets('some-key')
    someValue.first = 'change the value!'
    dalli_client.set('some-key', *someValue)

but that feels more awkward. What do you think?