Posts tagged with “REDIS

05. 02. 2013

Vyčuránek (Lua & Redis)

Jakožto objevitel všech objevenejch světadílů, vynálezce nejšišatějších kol a lenivá svině v jedný osobě, jsem snad stokrát neuspěšně hledal jak přímo v redic-cli smazat všechny klíče s nějakým prefixem (nebo prostě klíče, který matchnou glob-like výraz — tedy prostě a jednoduše to, co umi KEYS). Marně. Takže:

  • Redis to neumí,
  • volat xargs & redis-cli nechci,
  • připojit se nějakým klientem a procyklit nechci (mega boilerplate kvůli pičovince)
  • blablablá

a tak jsem objevil (tadá), že Redis má od 2.6 integrovanou Luu. Chachá!

verze z první ruky:

eval "for k,v in ipairs(redis.call('keys', 'bsedv*')) do redis.call('del', v) end" 0`

z druhý (má kontrolu, že se fakt něco stalo):

eval "local kexpr='bsdev*'
      for k,v in ipairs(redis.call('keys', kexpr)) do redis.call('del', v) end
      return #redis.call('keys', kexpr)" 0

no a něco normálnějšího:

eval "local kexpr='bsedv*'; redis.call('del', unpack(redis.call('keys', kexpr))); return #redis.call('keys', kexpr)" 0

když to ořežu na to podstatný, nevypadá už to tak zle:

eval "redis.call('del', unpack(redis.call('keys', 'bsedv*')))" 0

PS. Luu moc neovladám, ale začínám na to makat. Stejně jako na čemkoliv jiným. Tedy výhledově.

no comments yet